CountdownTimer在带有循环程序的单独线程中

时间:2018-07-30 19:21:29

标签: android multithreading handler countdowntimer

我正在尝试实施倒计时,以警告用户离开某个区域时。为此,我试图在JobIntentService中使用CountdownTimer。但是,这意味着CountdownTimer处于线程中,而没有循环程序会引发异常。 java.lang.RuntimeException: Can't create handler inside thread Thread[AsyncTask #1,5,main] that has not called Looper.prepare()

我找到了这个Question on a CountdownTimer in its own thread with looper,但是答案有6-7岁了,我希望对线程和处理程序使用最佳实践。

如果任何人都可以以一种更清洁的方式对如何做到这一点有所了解,那将是不胜感激的。

1 个答案:

答案 0 :(得分:0)

始终使用Looper创建处理程序。

1)创建者UI处理程序以更新UI

Handler mainThreadhandler = new Handler(context.getMainLooper());
mainThreadhandler.post(new Runnable(){
   public void run(){
    // UI work
   }
});

2)创建线程处理程序,以运行后台任务。

HandlerThread bgThread = new HandlerThread("MyHandlerThread");
bgThread.start();
Handler bgHandler = new Handler(bgThread.getLooper());
bgHandler.post(new Runnable(){
   public void run(){
    // background work
   }
});

不要忘记在完成活动时进行清理。

@Override
public void onDestroy() {
  bgHandler.getLooper().quit();
  super.onDestroy();
}