Android Handler运行原理

来源:互联网 发布:网络直播的普及率 编辑:程序博客网 时间:2024/05/22 14:21

         在Android开发中,主线程的主要任务是监听事件和绘制界面,如果处理一些费时的操作如下载图片等就会阻塞主线程(也称为UI线程),常用的做法是耗时操作放到另一个线程中去,完成后通知UI线程去更新界面,这样任务分的更清晰:UI线程负责UI处理,子线程负责网络下载,其中子线程通知主线程一般都是用Handler来完成,可Handler是怎么做到的呢?

        首页在UI线程启动时,系统自动调用了二行代码1.Looper.prepare(); 2.Looper.loop();其中1是为UI线程建一个Looper的线程变量,2是一直循环这个Looper中的MessageQueue中的Message,如果有则调用改善此Message的Handler中的dispatchMessage();方法来处理此消息.

       在我们new Handler()时,系统会将我们新建这个Handler的线程(这里为UI线程,如果我们自己的线程没调用Looper.prepare()则会出错)中的Looper对象和对应的MesssageQueue引用给此Handler。

       当我们在新的线程中调用Handler.sendMessage(Message msg)时,Handler会将此消息放到MessageQueue中,同时将msg.target设置成发送消息的Handler。

原创粉丝点击