Handler

作者: Neo_duan | 来源:发表于2018-01-15 10:45 被阅读12次

    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方法中执行异步任务
    - 优点:不会有堵塞,减少了对性能的消耗
    - 缺点:不能同时进行多任务处理,需要等待进行处理,处理效率低
    

    相关文章

      网友评论

          本文标题:Handler

          本文链接:https://www.haomeiwen.com/subject/ncyroxtx.html