如何取消postDelay处理程序

时间:2014-06-04 16:40:53

标签: android handler

我有一个闪屏"介绍"活动,只显示应用程序的标题。以及有关开发人员的简要信息,它有button名为" skip"。我创建了一个postHandler,以便主要活动在3秒后自动启动。或者,主要活动应在按下skip按钮时开始。如果"跳过"按下button它应该使postHandled callbacks无效/删除。但是,即使在我按下"跳过" button并移动到主Activity,主活动再次开始,好像,mHandler.removeCallbacks(mRunnable);未被调用。我只想按下"跳过button移动到主活动一次,它不应该在"跳过" button被迫了。请参阅下面的代码,让我知道错误或缺失。

代码:

    mHandler = new Handler();
    mRunnable = new Runnable() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            Intent intent01 =  new Intent(Intro.this, MainMenuActivity.class);
            startActivity(intent01);
            finish();
        }
    };
    ....
    ....
    mHandler.postDelayed(mRunnable, SPLASH_TIME_OUT);

    introButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            mHandler.removeCallbacks(mRunnable);
            Intent intent00 = new Intent(Intro.this, MainMenuActivity.class);
            startActivity(intent00);
            finish();
        }
    });

1 个答案:

答案 0 :(得分:1)

将您的逻辑放在onDestroy()

@Override
    protected void onDestroy() {
        super.onDestroy();
        mHandler.removeCallbacks(mRunnable);
        Log.d("Callbacks", "Removed");
    }