gpt4 book ai didi

java - timer.scheduleAtFixedRate 有异常

转载 作者:行者123 更新时间:2023-11-29 05:21:28 28 4
gpt4 key购买 nike

我的代码是:

ou=100
final Timer t=new Timer();
TimerTask tt=new TimerTask() {
@Override
public void run() {
ou-=10;
if(ou==0)
btnstart.setText(btnstart.getText().toString()+"t");

}};
t.scheduleAtFixedRate(tt, 2000, 2000);

但是当我运行这个程序时更改 btnstart.text 程序将关闭并出现此错误“不幸的是,已停止”

这是我的日志猫:

07-01 15:27:30.714: W/dalvikvm(973): threadid=11: thread exiting with uncaught exception (group=0x40a13300)
07-01 15:27:30.786: E/AndroidRuntime(973): FATAL EXCEPTION: Timer-0
07-01 15:27:30.786: E/AndroidRuntime(973): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
07-01 15:27:30.786: E/AndroidRuntime(973): at android.os.Handler.(Handler.java:121)
07-01 15:27:30.786: E/AndroidRuntime(973): at android.widget.Toast$TN.(Toast.java:322)
07-01 15:27:30.786: E/AndroidRuntime(973): at android.widget.Toast.(Toast.java:91)
07-01 15:27:30.786: E/AndroidRuntime(973): at android.widget.Toast.makeText(Toast.java:238)
07-01 15:27:30.786: E/AndroidRuntime(973): at ir.maghsoodi.reminders.MainActivity$1$1.run(MainActivity.java:45)
07-01 15:27:30.786: E/AndroidRuntime(973): at java.util.Timer$TimerImpl.run(Timer.java:284)

最佳答案

TimerTask 在另一个线程 (TimerThread) 中执行,您无法从非主线程更新 UI 元素。

使用 btnstart.post( Runnable ) 在 UI Thread 中执行代码。

例子

if(ou==0) {
btnstart.post(new Runnable() {
@Override
public void run() {
btnstart.setText(btnstart.getText().toString()+"t");
}
});
}

关于java - timer.scheduleAtFixedRate 有异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24515013/

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