我有一个HandlerThread,我每5秒就往里面发布一个可运行的任务。代码如下:
HandlerThread thread = new HandlerThread("MyThread");
thread.start();
Handler handler = new Handler(thread.getLooper());
handler.post(new Runnable() {
public void run() {
//...
handler.postDelayed(this, 5000);
}
});
我需要在一定时间后停止循环,比如60秒左右...所以我写了以下代码:
mainHandler = new Handler(Looper.myLooper()); //main thread's
mainHandler.postDelayed(new Runnable() {
@Override
public void run() {
thread.getLooper().quit();
}
}, 60000);
我认为这会导致循环程序突然退出,因此我开始收到这些“警告”消息:
W/MessageQueue(3726): java.lang.RuntimeException: Handler (android.os.Handler) {4823dbf8} 在发送消息给已停止的线程上
我想要避免这个错误消息,我想通过使用 Looper.quitSafely()
方法来解决它...但我查看了API,发现它不再可用。有人知道发生了什么吗?(它不像其他某些方法一样被弃用)。
是否有某种方法可以安全地退出循环程序?谢谢!