带有循环程序的单独线程中的 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();
}
我正在尝试实施倒计时以在用户离开某个区域时警告他们。为此,我试图在 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();
}