Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基本计时器上的Java IllegalThreadStateException_Java_Android - Fatal编程技术网

基本计时器上的Java IllegalThreadStateException

基本计时器上的Java IllegalThreadStateException,java,android,Java,Android,我在android studio中有一个android应用程序的代码,可以在延迟1秒后运行一个方法: new java.util.Timer().schedule( new java.util.TimerTask() { @Override public void run() { loginClicked(); }

我在android studio中有一个android应用程序的代码,可以在延迟1秒后运行一个方法:

    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();方法。如果它能工作,那么问题不在定时器。