基本计时器上的Java IllegalThreadStateException
我在android studio中有一个android应用程序的代码,可以在延迟1秒后运行一个方法:基本计时器上的Java IllegalThreadStateException,java,android,Java,Android,我在android studio中有一个android应用程序的代码,可以在延迟1秒后运行一个方法: new java.util.Timer().schedule( new java.util.TimerTask() { @Override public void run() { loginClicked(); }
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
loginClicked();
}
},
1000
);
但是,它每次执行时都会产生此错误:
java.lang.IllegalThreadStateException:循环器必须与此线程关联
我基本上是从Android上获取的,所以我真的不知道是怎么回事。在这种情况下,你最好在Android上使用
处理程序
TimerTask
是纯java,您可以在这里看到差异和其他重要信息:
TimerTask
报告的一些问题包括:
- 无法更新UI线程
- 内存泄漏
- 不可靠(不总是有效)
- 长时间运行的任务可能会干扰下一个计划的事件
但是,您可以使用以下代码:
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//Do your things after 1000ms
loginClicked();
}
}, 1000);
为什么要编写java.util.Timer而不是Timer和TimerTask?尝试不使用java.util.Timer并导入它们。然后删除loginClicked();方法。如果它能工作,那么问题不在定时器。