HandlerThread

本文详细介绍了HandlerThread的工作原理及其使用方法。HandlerThread继承自Thread,主要用于创建一个带消息队列的线程,允许开发者通过Handler发送和处理消息。文章还提供了具体的代码示例,包括创建Looper对象、消息传递及延迟操作等。
摘要由CSDN通过智能技术生成

HandlerThread继承于Thread,所以它本质就是个Thread。与普通Thread的差别就在于,主要的作用是建立了一个线程,并且创立了消息队列,有来自己的looper,可以让我们在自己的线程中分发和处理消息。故不能够直接操作主线程ui,否则会出现以下错误:

only the original thread that created a view hierarchy can touch its views

1)首先创建looper对象

private static final int MSG_LOAD_DATA = 0;
private static final int MSG_COMMIT_DATA = 1;
private static HandlerThread mThread = new HandlerThread("greenThread");
static {
     mThread.start();
}

private Callback mCallback = new Callback() {
    @Override
    public boolean handleMessage(Message msg) {
        switch (msg.what) {
            case MSG_LOAD_DATA:
                getMessage();
                break;
            case MSG_COMMIT_DATA:
                CommitPassword();
                break;
            default:
                break;
        }
        return true;
    }
};

private Handler mHandler = new Handler(mThread.getLooper(), mCallback);

2)之后,便可以通过handler进行消息的传递了,如下:

Message msg = mHandler.obtainMessage();
mHandler.removeMessages(MSG_LOAD_DATA);
mHandler.sendEmptyMessageDelayed(MSG_LOAD_DATA, 1 * 300L);

3)延迟操作:
实现runable接口,或者继承thread类,或者继承AsyncTask都可以,如AsynTask:

class Task extends AsyncTask<Void, Void, Void> {
    protected Void doInBackground(Void... params) {
        Thread.sleep(1000);
    }
    protected void onPostExecute(Void result) {
        result.setText("dddd");
    }
}

主线程--->new Task().execute();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值