2

我使用了postedDelayed 方法来刷新我的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();
    }
4

3 回答 3

4

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

mHandler.postDelayed(mRunnable, mTime)

刷新活动,然后使用

mHandler.removeCallbacks(mRunnable)

onPause()活动的方法上。

于 2013-04-17T03:52:12.160 回答
0

在你的 postdelayed 方法中做一个布尔符号。初始化sign为true,活动结束后,设置sign值为false。

于 2013-04-17T03:36:47.917 回答
0

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

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

        // run your code here    

    }
}, 3000);
于 2014-06-06T10:26:36.557 回答