我有一个 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);
}
});
我需要在某个时候退出 looper,在 60 秒或类似的时间后......所以我写:
mainHandler = new Handler(Looper.myLooper()); //main thread's
mainHandler.postDelayed(new Runnable() {
@Override
public void run() {
thread.getLooper().quit();
}
}, 60000);
我认为这会导致 looper 突然退出,所以我开始收到这个“警告”消息:
W/MessageQueue(3726): java.lang.RuntimeException: Handler (android.os.Handler) {4823dbf8} 在死线程上向 Handler 发送消息
我想避免这个错误消息,我认为我可以通过使用该Looper.quitSafely()
方法来解决它。但我检查了API,它不再可用。有谁知道发生了什么?(它不像其他一些方法那样被弃用)。
有什么方法可以安全地退出弯针吗?谢谢!