Когда пользователь открывает фрагмент, мне нужно позвонить в сервис через 30 секунд.Итак, я выполняю следующий код:
handler.postDelayed(runnable, 30000);
runnable = new Runnable() {
public void run() {
fetchData(true);
}
};
Но мне нужно остановить этот обработчик, когда пользователь покидает фрагмент, поэтому я выполняю следующий код во всех возможных блоках паузы, но проблема в том, что он продолжает нажиматьуслуга, если я иду к другому фрагменту или помещаю заявку в историю.
@Override
public void onStop() {
super.onStop();
if(handler!=null) {
handler.removeCallbacksAndMessages(null);
handler.removeCallbacks(runnable);
}
@Override
public void onPause() {
super.onPause();
if(handler !=null){
handler.removeCallbacksAndMessages(null);
handler.removeCallbacks(runnable);
}
}
@Override
public void onDetach() {
super.onDetach();
if(handler !=null){
handler.removeCallbacksAndMessages(null);
handler.removeCallbacks(runnable);
}
}
Мне нужно знать, как отменить обработчик.