Naz*_*rke 3 android handler android-activity
我已经声明了 private Handler mHandler = new Handler(); 并在我的活动中多次使用此处理程序。例如:
// fade out view nicely after 5 seconds
mHandler.postDelayed(new Runnable() {
public void run() {
tview.setText(null);
}
}, 4000);
Run Code Online (Sandbox Code Playgroud)
或者
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);
Run Code Online (Sandbox Code Playgroud)
现在,如果我返回(通过按下后退按钮)当这个处理程序已经开始它的动作时,因为这个处理程序活动没有完成。我希望 mHandler 停止它正在做的任何事情并且不阻止活动完成。我怎么做?
我怎么做?
我有点困惑你想说什么,但如果我理解正确,你需要覆盖onBackPressed()方法,在这里你将停止 Handler 并完成 Activity。
伪代码:
@Override
public void onBackPressed() {
// stop Handler
handler.removeCallbacks(runnable);
// to stop anonymous runnable use handler.removeCallbacksAndMessages(null);
finish();
}
Run Code Online (Sandbox Code Playgroud)
由于您的Runnable是匿名的,您需要使用第二种方法:
handler.removeCallbacksAndMessages(null);
Run Code Online (Sandbox Code Playgroud)
如果你对这个方法感到困惑,这里是它的文档:
删除任何挂起的回调和已发送的 obj 为令牌的消息。如果 token 为空,所有回调和消息将被删除。
| 归档时间: |
|
| 查看次数: |
2701 次 |
| 最近记录: |