私は5秒ごとにランナブルを投稿し続けるHandlerThreadを持っています。このようなもの:
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} がデッド スレッドの Handler にメッセージを送信しています
このエラーメッセージを回避したいのですが、メソッドを使えば解決できると思っていたのですが、 APILooper.quitSafely()
を確認したところ利用できなくなりました。何が起こったのか知っている人はいますか?(他の方法のように非推奨ではありません)。
ルーパーを安全に終了する方法はありますか? ありがとう!