您的位置:首页 > 移动开发

关于app退出后子线程停止的问题

2015-12-21 11:44 525 查看
在Android的程序中,UI线程是主线程

理论上来讲,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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: