处理程序未被取消

时间:2018-04-26 06:07:08

标签: android android-activity android-handler

我在我的应用中创建了一个处理程序。此处理程序的功能是,如果它在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 中停止处理程序。但问题是,如果我从此活动导航到任何其他活动,则启动处理程序代码仍会执行并将我带到视频活动。

那么停止处理程序的正确方法是什么?

0 个答案:

没有答案