码迷,mamicode.com
首页 > 移动开发 > 详细

Android Handler

时间:2016-08-20 19:25:10      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:

一、handler 是什么?

       更新ui。

       发送消息,处理消息。

二、handler 怎么用?

       sendMessage

       sendMessageDelayed

       post(Runnable)

       postDelayed(Runnable,long)

三、handler 的目的

      最根本的目的是解决多线程并发问题。

      假设如果在一个Activity中,有多个线程去更新UI,并且没有加锁机制,那么就会更新界面错乱

      如果对更新UI的操作都进行加锁处理,又会引起性能下降。

      对于以上问题的考虑,android给我没提供了一套更新UI的机制,我们只需要遵循这样的机制就可以了。不用去关系多线程问题,所以更新UI的操作,都是在主线程的消息队列中轮询处理的。

四、那么Handler Looper 与 MessageQueue 是如何关联的呢?

    1、 Looper: 自定意线程中的prepare():

     技术分享

  注意:主线程启动时调用的是 prepareMainLooper()

        技术分享

         技术分享

       2、而同时,Looper同时绑定了一个MessageQueue(作为属性);

       技术分享

       3、Handler()中又与Looper,looper.messageQueue关联。

        技术分享

       技术分享

          技术分享

          4、至此完成三者绑定。

          5、Looper.loop() 的调用,导致MessageQueue 开始循环工作,取出message,调用message.target——> handleMessage()

               技术分享

                 技术分享

        补充说明:handler.sendMessage ——>间接调用如下方法,将MessageQueue中的Message.target设置成发送Message的handler自身

                 技术分享

 

Android Handler

标签:

原文地址:http://www.cnblogs.com/1995hxt/p/5790877.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!