Handler

Handler关联了一个Looper,而Looper里面关联了一个消息队列,Looper关联了Local本地线程
send消息,发Msg发送到队列中,启动looper循环,然后通过msg.target分发,msg.target就是Hnadler自己,然后调用它的handleMsg方法

内存泄露

使用静态内部类,并使用弱引用

new Thread() {
    @Override
    public void run() {
        super.run();
        
        //子线程中不能修改主UI的控件,列入Activity中的TextView等
        
        //子线程中可以弹出Toast和Dialog,只需要准备Looper即可
        Looper.prepare();
        showDialog();
        Toast.makeText(MainActivity.this, "text", Toast.LENGTH_SHORT).show();
        Looper.loop();
    }
}.start();

HandlerThread (里面封装了一个Looper,外界要配合Handler使用)

- extends Thread,开启Thread子线程进行耗时操作,避免多次创建线程
- Handler + Thread + Looper
- 通过获取HandlerThread的Looper对象传递给Handler对象,可以在handleMessage方法中执行异步任务
- 优点:不会有堵塞,减少了对性能的消耗
- 缺点:不能同时进行多任务处理,需要等待进行处理,处理效率低
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容