Thread无法关闭问题
2015-09-18 14:54
169 查看
当我们在Activity或者Service需要执行一些比较耗时的任务时,就会想到使用子线程Thread。这时候就是特别注意了,我们finish Activity或Service的时候就要先把线程停掉,否则系统是无法调用Activity或Service的onDestroy方法的。
很多人可能会想到使用stop方法来停止,我们看java文档就知道这个方法已经被遗弃了,即使你调用了也是没有用的,也达不到停止线程的目的。解决办法之一就是在Thread的run方法设置标志位,
@Override
public void run() {
super.run();
while (!stop) {
//do something
}
}
在Activity里的onPause或Service里面的onUnbind(或onDestroy,具体情况具体分析),设置标志为true,如:
protected void onPause() {
stop= true;
super.onPause();
}
很多人可能会想到使用stop方法来停止,我们看java文档就知道这个方法已经被遗弃了,即使你调用了也是没有用的,也达不到停止线程的目的。解决办法之一就是在Thread的run方法设置标志位,
@Override
public void run() {
super.run();
while (!stop) {
//do something
}
}
在Activity里的onPause或Service里面的onUnbind(或onDestroy,具体情况具体分析),设置标志为true,如:
protected void onPause() {
stop= true;
super.onPause();
}
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 个人信息安全报告发布:有 APP 每分钟调用位置权限 1468 次
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树