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();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容