关于app退出后子线程停止的问题
2015-12-21 11:44
525 查看
在Android的程序中,UI线程是主线程
理论上来讲,Activity调用了finish方法后,主线程就终止了
那么其上的子线程也应该是停止
但是通过测试,发现并不是这样
finish退出程序后,子线程还在后台跑
必须用DDMS停止该线程才行
推荐:
HandlerThread +Handler
1.初始化HandlerThead 初始化Handler
2.回收时的处理
如果有Callbacks则移除
Runnable test=new Runnable(){};
handler.removeCallbacks(test)
理论上来讲,Activity调用了finish方法后,主线程就终止了
那么其上的子线程也应该是停止
但是通过测试,发现并不是这样
finish退出程序后,子线程还在后台跑
必须用DDMS停止该线程才行
推荐:
HandlerThread +Handler
1.初始化HandlerThead 初始化Handler
/* * 初始化Data以及View*/ private void init() { updateThread = new HandlerThread("updateThread"); updateThread.start(); updateHandler = new Handler(updateThread.getLooper()) { @Override public void handleMessage(Message msg) { super.handleMessage(msg); initData(); Message message = new Message(); message.what = 1; mHandler.sendMessage(message); } }; updateHandler.sendEmptyMessage(UPDATEVIEW);
2.回收时的处理
@Override protected void onDestroy() { super.onDestroy(); if(db!=null) db.close(); updateHandler.removeMessages(UPDATEVIEW); substancesList=null; substancesListTemp=null; editList=null; }
如果有Callbacks则移除
Runnable test=new Runnable(){};
handler.removeCallbacks(test)
相关文章推荐
- Android隐式启动Activity匹配详解:Action,category,data
- Android Fragment 真正的完全解析(上)
- light black color code in android
- ios 获取当前时间,并转换成时间戳
- SharePoint 2013 - App Domain Configuration
- Permission Denial: opening provider com.android.*错误解决办法
- Android使用GPS获取用户地理位置并监听位置变化的方法
- ListView+BaseAdapter的使用方法
- android ndk-gdb 调试
- View篇——实现Excel表格显示
- 推送证书p12文件转换成pem的命令
- iPhone/iOS开发推送C++服务端APNS源代码
- Wpf ScrollViewer with WrapPanel 使用鼠标滚轮水平滚动内容
- Mapped Statements collection does not contain value for
- Android版添加phonegap-百度地图插件教程
- cocos2d-x 代码中使用 std::to_string 要注意!
- iOS 使用NSURLConnection
- 六款值得推荐的android(安卓)开源框架简介
- Android Studio 构建速度优化策略(一)
- Android使用fitsSystemWindows属性实现–状态栏【status_bar】各版本适配方案