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

来源:互联网 发布:淘宝网店上传宝贝教程 编辑:程序博客网 时间:2024/06/04 18:21
在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.回收时的处理

@Overrideprotected 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)

0 0
原创粉丝点击