HandlerThread

HandlerThread继承于Thread,所以它本质就是个Thread。与普通Thread的差别就在于,它有个Looper成员变量。这个Looper其实就是对消息队列以及队列处理逻辑的封装,简单说就是 消息队列+消息循环。

当我们需要一个工作者线程,而不是把它当作一次性消耗品,用过即废弃的话,就可以使用它。

 

    private Handler mHandler = null;

    private HandlerThread mHandlerThread = null;

 

    private void sentRunnableToWorker(Runnable run){

        if (null == mHandlerThread)
        {
            mHandlerThread = new HandlerThread("WorkerThread");

            // 给工作者线程低优先级
            mHandlerThread.setPriority(Thread.MIN_PRIORITY);
            mHandlerThread.start();
        }

        if (null == mHandler)
            mHandler = new Handler(mHandlerThread.getLooper());

        mHandler.post(run);

    }

 

AsyncQueryHandler就是基于HandlerThread封装了线程间双向通信,而HandlerThread只做了一半。

你可能感兴趣的:(thread,工作,null)