Я создал обработчик в своем приложении.Функциональность этого обработчика заключается в том, что если он не обнаруживает ввод пользователя в течение 15 секунд (касание, перетаскивание и т. Д.), Он запускает новое действие.Вот код для того же.
public void startHandler(long duration) {
if (handler != null) {
handler.postDelayed(r, duration);
Log.d("handler", "inside if");
} else {
Log.d("handler", "inside else");
handler = new Handler();
r = new Runnable() {
@Override
public void run() {
Log.d("handler", "handler running");
// TODO Auto-generated method stub
Intent intent = new Intent(ActivityProducts.this, ActivityVideo.class);
startActivity(intent);
}
};
handler.postDelayed(r, duration);
}
}
Здесь продолжительность является динамической и выбирается с сервера.
Ниже приведен код для остановки обработчика.
public void stopHandler() {
if (handler != null) {
handler.removeCallbacks(r);
handler.removeCallbacksAndMessages(null);
handler = null;
}
}
Ниже приведен код для запуска обработчика
@Override
public void onUserInteraction() {
// TODO Auto-generated method stub
super.onUserInteraction();
Log.d("user", "interacted");
//stop first and then start
if (duration != 0) {
stopHandler();
startHandler(duration);
}
}
Я остановил обработчик всеми методами onPause, onStop и onDestroy .Но проблема в том, что, если я перейду к какому-либо другому действию из этого действия, код обработчика запуска все равно будет выполнен и переместит меня в Видеоактив.
Итак, как правильно остановить обработчик?