HandlerThread什么鬼

HandlerThread

handlerThread和它的名字不太一样,没有handler什么事情,它是Thread的子类,是一个内建looper的Thread。

其实HandlerThread就是如下代码:

new Thread(new Runnable() {
            @Override
            public void run() {
                Looper.prepare();   //looper的准备
                Looper.loop();        //开始loop循环
            }
        }); //创建带Looper的Thread对象

所以由上代码我们知道,这个东西是用来让其他线程通知这个子线程做一些事情的,当然,需要先拿到这个线程的handler才可以。

所以下面来写如何让这个线程做一些东西,用handler传递消息

HandlerThread handlerThread = new HandlerThread("test");  
handlerThread.start();//开辟一个线程

Handler handler = new Handler(handlerThread.getLooper()) {  
            @Override  
            public void handleMessage(Message msg) {
                super.handleMessage(msg);  
                System.out.println("自线程做的事情");  
            }  
        };  


//这时候,在handler调用post或send时候,就可以通知子线程了
handler.sendEmptyMessage();

你可能感兴趣的:(HandlerThread什么鬼)