我使用了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();
}
答案 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);