gpt4 book ai didi

android - 创建一个在 UI 线程 Android 中更新的秒表

转载 作者:行者123 更新时间:2023-11-29 22:10:24 24 4
gpt4 key购买 nike

我一直在努力弄清楚如何制作精确到百分之一秒的定制天文台表。我已经查看了很多其他类似的问题,并决定使用线程和处理程序进行尝试。

这是我自定义的 handleMessage 方法:

public void handleMessage(Message msg) {
String timeText = msg.getData().getString("time");
watch.setText(timeText);
}

watch 对象只是一个在 onCreate() 中初始化的 TextView。

这是我运行方法的主要部分:

while(true) {
long timeElapsed = System.currentTimeMillis() - startTime;
int hundreths = (int)((timeElapsed % 1000) / 10);
int seconds = (int)((timeElapsed % 60000) / 1000);
int minutes = (int)(timeElapsed / 60000);
Bundle bundle = new Bundle();
bundle.putString("time", String.format("d:%02d.%02d", minutes, seconds, hundreths));
Message msg = handler.obtainMessage();
msg.setData(bundle);
handler.handleMessage(msg);
}

我意识到使用处理程序背后的整个想法是只有 UI 线程可以更新屏幕上的元素,但我仍然收到 CalledFromWrongThreadException 消息,只有开始创建 View 层次结构的原始线程可以调用方法在上面。我对我到底做错了什么感到困惑。

最佳答案

我认为你的错误是因为你使用的是 handleMessage 而不是 sendMessage。

更简单的方法可能是使用 runOnUiThread 方法并放弃处理程序。

http://developer.android.com/reference/android/app/Activity.html#runOnUiThread(java.lang.Runnable )

关于android - 创建一个在 UI 线程 Android 中更新的秒表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9776975/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com