HandlerThread

来源:互联网 发布:win7注册表优化工具 编辑:程序博客网 时间:2024/05/18 00:57

package com.example.yanglliu.activitysavedemo.ui.fragment;import android.os.Bundle;import android.os.Handler;import android.os.HandlerThread;import android.os.Message;import android.support.annotation.Nullable;import android.text.Html;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import com.example.yanglliu.activitysavedemo.R;/** * Created by yangl.liu on 2016/7/5. */public class HandlerThreadFragment extends BaseFragment {    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        view = inflater.inflate(R.layout.fragment_hander_thread, container, false);        //创建后台线程        initBackThread();        mTvServiceInfo = (TextView) view.findViewById(R.id.id_textview);        return view;    }    private TextView mTvServiceInfo;    private HandlerThread mCheckMsgThread;    private Handler mCheckMsgHandler;    private boolean isUpdateInfo;    private static final int MSG_UPDATE_INFO = 0x110;    //与UI线程管理的handler    private Handler mHandler = new Handler();    private void initBackThread() {        mCheckMsgThread = new HandlerThread("check-message-coming");        mCheckMsgThread.start();        mCheckMsgHandler = new Handler(mCheckMsgThread.getLooper()) {            @Override            public void handleMessage(Message msg) {                checkForUpdate();                if (isUpdateInfo) {                    //sendEmptyMessage调用的是sendEmptyMessageDelayed(MSG_UPDATE_INFO,0);                    mCheckMsgHandler.sendEmptyMessageDelayed(MSG_UPDATE_INFO, 1000);                }            }        };    }    /**     * 模拟从服务器解析数据     */    private void checkForUpdate() {        try {            //模拟耗时            Thread.sleep(1000);            mHandler.post(new Runnable() {                @Override                public void run() {                    String result = "实时更新中,当前大盘指数:<font color='red'>%d</font>";                    result = String.format(result, (int) (Math.random() * 3000 + 1000));                    mTvServiceInfo.setText(Html.fromHtml(result));                }            });        } catch (InterruptedException e) {            e.printStackTrace();        }    }    @Override    public void onResume() {        super.onResume();        //开始查询        isUpdateInfo = true;        mCheckMsgHandler.sendEmptyMessage(MSG_UPDATE_INFO);    }    @Override    public void onPause() {        super.onPause();        //停止查询        isUpdateInfo = false;        mCheckMsgHandler.removeMessages(MSG_UPDATE_INFO);    }    @Override    public void onDestroy() {        super.onDestroy();        //释放资源        mCheckMsgThread.quit();    }}


HanlerThread应用场景(耗时任务时总会new一个Thread的线程去跑,当任务执行完后,线程就会自动被销毁掉,如果又由新的任务,我们又得新建线程...


0 0
原创粉丝点击