我已经声明了 private Handler mHandler = new Handler();并在我的 Activity 中多次使用此处理程序。例如:
// fade out view nicely after 5 seconds
mHandler.postDelayed(new Runnable() {
public void run() {
tview.setText(null);
}
}, 4000);
或
mHandler.postDelayed(new Runnable() {
public void run() {
tview.setText(null);
parentLayout.findViewById(R.id.fireplace).setVisibility(View.GONE);
parentLayout.removeView(findViewById(R.id.fireplace));
water_room.setVisibility(View.VISIBLE);
playSound(fountainSoundID);
}
}, 3000);
现在,如果我在这个处理程序已经开始它的操作时返回(通过按后退按钮),因为这个处理程序 Activity 没有完成。我希望 mHandler 停止它正在做的任何事情并且不阻止 Activity 完成。我该怎么做?
How do I do that?
我不太明白你想说什么,但如果我理解正确,你需要覆盖 onBackPressed()方法,在这里您将停止 Handler 并完成 Activity。
伪代码:
@Override
public void onBackPressed() {
// stop Handler
handler.removeCallbacks(runnable);
// to stop anonymous runnable use handler.removeCallbacksAndMessages(null);
finish();
}
由于您的Runnable 是匿名的,您需要使用第二种方法:
handler.removeCallbacksAndMessages(null);
如果你对这个方法感到困惑,这里是它的文档:
Remove any pending posts of callbacks and sent messages whose obj is token. If token is null, all callbacks and messages will be removed.
我是一名优秀的程序员,十分优秀!