Java timer.scheduleAtFixedRate存在异常
我的代码是:Java timer.scheduleAtFixedRate存在异常,java,android,timer,Java,Android,Timer,我的代码是: 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
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:线程以未捕获异常退出(组=0x40a13300)07-01 15:27:30.786:E/AndroidRuntime(973):致命异常:计时器-0
07-01 15:27:30.786:E/AndroidRuntime(973):java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序 07-01 15:27:30.786:E/AndroidRuntime(973):在android.os.Handler.(Handler.java:121)
07-01 15:27:30.786:E/AndroidRuntime(973):在android.widget.Toast$TN.(Toast.java:322)
07-01 15:27:30.786:E/AndroidRuntime(973):在android.widget.Toast.(Toast.java:91)
07-01 15:27:30.786:E/AndroidRuntime(973):在android.widget.Toast.makeText(Toast.java:238)上 07-01 15:27:30.786:E/AndroidRuntime(973):在ir.maghsoodi.members.MainActivity$1$1.run(MainActivity.java:45)
07-01 15:27:30.786:E/AndroidRuntime(973):在java.util.Timer$TimerImpl.run(Timer.java:284)
TimerTask
在另一个线程(TimerThread)中执行,您不能从非主线程的线程更新UI
元素
使用btnstart.post(Runnable)
在UI线程内执行代码
范例
if(ou==0) {
btnstart.post(new Runnable() {
@Override
public void run() {
btnstart.setText(btnstart.getText().toString()+"t");
}
});
}
您不能从另一个线程更新UI,您需要使用解释过的处理程序,或者(在我看来更容易)使用库我该怎么做?你能解释更多吗?我怎样才能发送祝酒辞而不是更改按钮的文本?(对于一个新问题,请问另一个问题)我该怎么做?你能再解释一下吗?