在Android的程序中,UI线程是主线程
理论上来讲,Activity调用了finish方法后,主线程就终止了
那么其上的子线程也应该是停止
但是通过测试,发现并不是这样
finish退出程序后,子线程还在后台跑
理论上来讲,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)