美文网首页
从头再看Handler

从头再看Handler

作者: 爺珍爱那颗心 | 来源:发表于2020-03-24 20:54 被阅读0次

Handler是什么

  • 想必每一个做安卓开发的人都知道Handler,就是线程间通信的桥梁,那么他的本质是什么呢,说白了就是内存共享。

Handler的是如何实现内存共享的

  • 这就要说到Message消息,说到消息就需要说到MessageQueue消息队列,那么有了消息和消息队列,肯定少不了Looper消息泵,最后如何运行起来呢,就用到了Looper.loop()消息泵的开关,好了到这里Handler基本就明了了。

从源码理解Handler

  • 我们用Handler发送消息都是通过sendMessage()或者post()方法,最后调用的都是enqueueMessage方法。

Handler内存共享如何保证数据的安全

  • 这里就要说到一个新的角色ThreadLocal,ThreadLocal中有一个静态内部类ThreadLocalMap,他为每个线程都维护一个table数组,其中通过int i = firstKey.threadLocalHashCode & (INITIAL_CAPACITY - 1);int i = key.threadLocalHashCode & (len-1);产生一个ThreadId作为key,value就是我们发出的消息。
    如果对ThreadLocal感兴趣可以看看这篇文章
    ThreadLocal

Handler如何存取消息

  • MessageQueue.enqueueMessage()向消息队列添加消息,MessageQueue.next()从消息队列里取消息。
  • 由此可以看出使用了生产者消费者模式,并且还有延迟消息的添加, 就像链表一样在给消息进行重排序。

今天就先写到这明天继续😂未完待续下期见!

相关文章

  • 从头再看Handler

    Handler是什么 想必每一个做安卓开发的人都知道Handler,就是线程间通信的桥梁,那么他的本质是什么呢,说...

  • 再看Handler源码

    Handler 可以分发 Message 对象和 Runnable 对象到主线程中, 每个 Handler 实例都...

  • Android消息机制笔记

    Handler Handler的声明: Handler handler = new Handler(new ...

  • 天才基本法~我烧脑呀!

    最近在看《天才基本法》,本来就等大结局再看,在抖音上已经看了剧透,说是烧脑。特意看了剧透,再看大结局,再从头看起。...

  • AsnycTask异步处理

    三种方式: Handler···Handler handler=new Handler(){@Overridepu...

  • Handler机制理解

    自己的理解:Handler的基础使用是 Handler handler=new Handler{ handlerM...

  • 2022-07-26

    小王子哽咽着说 我已经看了43次日落了 为什么还要我看第44次 我可以从头再看 43次 我可以再看很多的43次 我...

  • Handler

    创建一个 Handler handler = new Handler(); 初始化looper 与 handler...

  • Android后台运行服务Toast无法弹出问题

    handler=new Handler(Looper.getMainLooper()); handler.post...

  • Teamcenter客户化ITK二次开发介绍

    handler rule handler action handler extension user action...

网友评论

      本文标题:从头再看Handler

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