Обработчик не отменяется - PullRequest
0 голосов
/ 26 апреля 2018

Я создал обработчик в своем приложении.Функциональность этого обработчика заключается в том, что если он не обнаруживает ввод пользователя в течение 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 .Но проблема в том, что, если я перейду к какому-либо другому действию из этого действия, код обработчика запуска все равно будет выполнен и переместит меня в Видеоактив.

Итак, как правильно остановить обработчик?

...