基本计时器上的Java IllegalThreadStateException

时间:2018-10-02 09:41:25

标签: java android

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

    new java.util.Timer().schedule(
            new java.util.TimerTask() {
                @Override
                public void run() {
                    loginClicked();
                }
            },
            1000
    );

但是,每次执行时都会产生此错误:

  

java.lang.IllegalThreadStateException:必须将Looper与此线程关联。

我基本上是从this那里抢来的,所以我真的不知道怎么回事。

1 个答案:

答案 0 :(得分:2)

在这种情况下,您最好在Android上使用Handler

TimerTask是纯Java语言,您可以在此处查看差异和其他重要信息:https://stackoverflow.com/a/40339630/4409113

  

TimerTask报告的一些问题包括:

  • 无法更新UI线程
  • 内存泄漏
  • 不可靠(并不总是有效)
  • 长时间运行的任务可能会干扰下一个计划的事件

但是,您可以使用以下代码:

final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
  @Override
  public void run() {
    //Do your things after 1000ms
     loginClicked();
  }
}, 1000);