后延迟方法 - Android

时间:2013-04-17 03:13:01

标签: android android-intent android-activity postdelayed

我使用了publishDelayed方法来刷新我的Activity,这很好用。但问题是即使按下后退按钮后延迟方法也会回调上一个活动..

//处理器延迟刷新活动后的30000毫秒

mHandler.postDelayed(new Runnable() {
public void run() {
               dostuff();

        }
            }, 30000);
    }

protected void dostuff() {
Intent intent = getIntent();
finish();startActivity(intent);
Toast.makeText(getApplicationContext(), "refreshed", Toast.LENGTH_LONG).show();
}

public void onBackPressed() {
        super.onBackPressed();
        finish();
        mHandler.removeCallbacks(null);
        }

protected void onStop() {
            mHandler.removeCallbacks(null);
        super.onStop();
    }

3 个答案:

答案 0 :(得分:4)

您可以使用您正在调用removeCallbacks(runnable)方法的处理程序的postDelayed()方法。例如,如果您使用:

mHandler.postDelayed(mRunnable, mTime)

用于刷新活动,然后使用

mHandler.removeCallbacks(mRunnable)

在活动的onPause()方法中。

答案 1 :(得分:0)

在postdelayed方法中标记布尔值。将标志初始化为true,当活动完成时,将sign的值设置为false。

答案 2 :(得分:0)

你可以使用这段代码在延迟3秒后运行。

new Timer().schedule(new TimerTask() {          
    @Override
    public void run() {

        // run your code here    

    }
}, 3000);