线程一定要让他跑完,不然会内存泄漏

今天工作碰到一个问题,一个留言界面要实现实时聊天。

我思路是开启一个线程,每隔1s就调用一次拿取聊天信息的接口,写个while语句。

一开始,我没有考虑到控制这个while的条件,我发现我退出这个界面,甚至我退出我的app,这个进程竟然还在跑,这就造成了内存泄漏。

后来我在onDestroy()方法里将while的条件设置为flase,这个thread就跑完了,跑完了也就完美的销毁了。

我之前想线程的stop()方法呀,destroy方法都过时了。强制中断线程不太好,果然还是让他跑完好啊。

下面贴代码

private Thread thread;
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            if (msg.what == 0x1242) { //刷新聊天界面  HttpUtils.getInstantce().getMessageOrderListByOrderSn(doctorMessageOrderItemUser.getOrderSn(), new HttpConstant.SampleJsonResultListener<Feedback<List<DoctorMessage>>>() { @Override  public void onSuccess(Feedback<List<DoctorMessage>> jsonData) { list = jsonData.getData(); myAdapter.notifyDataSetChanged(); } @Override  public void onFailure(Feedback<List<DoctorMessage>> jsonData) { ToastUtils.showErrorMsg("获取信息失败!"); } }); } super.handleMessage(msg); } }; 
                thread = new Thread(new Runnable() {
                    @Override
                    public void run() {
                        while (iscontinue) {
                            try {
                                Thread.sleep(1000);
                                Message msg = new Message();
                                msg.what = 0x1242;
                                handler.sendMessage(msg);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                });
            }
        }
    };
@Override
protected void onDestroy() {
    iscontinue=false;
    super.onDestroy();
}

 

 

 

发布了28 篇原创文章 · 获赞 17 · 访问量 2万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章