У меня есть HandlerThread, на который я продолжаю публиковать запуск каждые 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: Обработчик (android.os.Handler) {4823dbf8} отправка сообщения в обработчике на мертвое нить
Я хочу, чтобы избежать этой ошибки Сообща, я не думал, что я мог бы решить эту проблему с помощью метода Looper.quitSafely()
.. но я проверил API и это больше не доступно. Кто-нибудь знает, что с ним случилось? (Это не устарел, как некоторые другие методы).
Есть ли способ, чтобы я мог безопасно покинуть петлитель? Благодаря!
остановка отправки handler.postDelayed (это, 5000) с задержкой Runnables – pskink
как с помощью флага или что-то? – sundie
Возможно, вы могли бы попробовать thread.getLooper(). QuitSafely()? – Richard