#android #multithreading #user-interface #handler #runnable
#Android #многопоточность #пользовательский интерфейс #обработчик #доступно для выполнения
Вопрос:
У меня есть приведенный ниже обработчик
private Handler uiHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
switch (msg.what)
{
case UPDATE:
// Perform UI updates here
// UI Updates done, schedule WORK in 15 seconds:
this.sendMessageDelayed(this.obtainMessage(WORK), 15000);
break;
case WORK:
{
new Thread(checkUpdates).start();
}
break;
default:
super.handleMessage(msg);
}
}
};
Внутри onResume()
я делаю следующее :
uiHandler.sendMessageDelayed(uiHandler.obtainMessage(WORK), 1000);
Внутри onPause()
я делаю следующее
uiHandler.removeCallbacksAndMessages(null);
НО обработчик никогда не останавливается и продолжает повторяться.
Как это остановить?
(Побочные вопросы: является ли использование задачи таймера с флагами, работает ли пользовательский интерфейс для выполнения некоторых обновлений, лучшим вариантом)
Комментарии:
1. вызовите Looper.dump после удаления обратных вызовов и сообщений
2. @pskink как это называется? можете ли вы быть более конкретным?
3. либо вызовите Looper.setMessageLogging один раз, либо Looper.dump всякий раз, когда вы хотите увидеть MessageQueue циклического ввода