java - 如何安全地停止处理程序?
问题描述
我在android中有一个处理程序定义为:
myHandler = new Handler(Looper.getMainLooper()){
@Override
public void handleMessage(Message msg){
switch (msg.what){
case 1:
break;
case 5:
break;
case 4:
break;
case 3:
break;
default:
super.handleMessage(msg);
}
}
};
现在杀清这个最好的方法是什么?我应该像他们在这里那样使用一些东西吗:handler.removeCallbacksAndMessages(null); onStop()
在或中做更好onDestroy()
?
解决方案
您不能停止 Runnable。你可以停止接收这样的回调。
Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
Intent i = new
Intent(MapsActivity.this,MapsActivity.class);
startActivity(i);
finish();
}
};
handler.post(runnable);
// use this when you don't want callback to be called anymore
handler.removeCallbacks(runnable);
推荐阅读
- python - 如何从 GCS 读取 json gzipped 文件并写入表?
- php - 在 HTTP POST 中修改 JSON 文件后,如何从 chartjs 重新加载数据
- node.js - 无法仅在没有 serverToServerKeyAuth 的情况下使用 apiTokenAuth 对 CloudKit JS 进行身份验证
- c - 服务器程序卡在 read() 函数上,但 write() 函数在客户端程序中运行良好
- elasticsearch - Elasticsearch 自动查找查询
- javascript - 谷歌表格批量更新无效值错误
- wpf - “'=' 附近的语法不正确。” 删除
- javascript - 可触摸组件中的 this/context 问题
- node.js - Ionic 3 项目中的 Node JS 和 SASS 不兼容问题
- c++ - 打印文本导致内存泄漏