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

CountdownTimer in a separate thread with looper

我正在尝试实施倒计时以在用户离开某个区域时警告他们。为此,我试图在 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 年历史,我想使用线程和处理程序的最佳实践。

如果有人能对如何以更简洁的方式执行此操作提供一点见解,我们将不胜感激。

始终使用 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
   }
});

完成 activity 时不要忘记清理。

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