- 博客(9)
- 收藏
- 关注
原创 Handler 消息机制流程图(四)
一、大体流程 二、epoll 流程 三、MessageQueue.next如何阻塞 enqueueMessage唤醒
2021-02-07 04:27:06
653
原创 Handler 消息机制源码分析(三)
一、非主线程中使用Handler 先官方一段话 Looper.prepare:会创建一个looper 一个MessageQueue 一个NatvieMessage 一个 fd文件描述符 Looper.loop:开启自己的循环读取消息 二、Looper中的IO复用 一个 MessageQueue 对应一个mPtr 1.我们Android中可以创建多个MessageQueue 所需需要用IO复用 Looper中的 MessageQueue N个Handler 发送Message(阻塞在 IO复用中)同一个文件
2021-02-06 02:56:51
194
1
原创 Handler 消息机制源码分析(二)epoll IO复用
一、MessageQueue 构造方法 1.android_os_MessageQueue.cpp 中初始化 android_os_MessageQueue_nativeInit(void) MessageNative 的初始化 以及返回mptr 初始化做了什么 创建NatvieMessage 创建Looper对象 (根据当前线程 有点像ThreadLocal) 返回mPtr 指针 指向的就是这个NativeMessage对象 2.Looper初始化做了什么 这个 Looper 构造方法 做了
2021-02-06 02:46:14
255
原创 Handler 消息机制源码分析(一)
学习Handler 需要掌握ThreadLocal、Linux内核的IO复用 epoll 配合源码一起看更好 一、ActivityThread main方法 Looper初始化 1.Looper.prepareMainLooper 2.Looper.loop方法 loop 方法非常重要 他主要2件事 从MessageQueue.next 读取消息对象 调用Message.target.dispatchMessage 就是handler的dispatchMessage 二、Handler如何存入消
2021-02-06 02:19:10
171
1
原创 LiveData 源码分析(一)
使用不介绍 一、postValue 如何执行到主线程中 1.LiveData - postValue ArchTaskExecutor 执行一个Runnable 对象 Runnable 对象中调用 了setValue 方法 (主要是 在哪去执行了切换线程) 2.ArchTaskEexcutor - postToMainThread方法 mDelegate 是 DefaultTaskExecutor 这里为什么做了多重封装?暂时还不知道 ArchTaskExecutor中其他方法的使用地方 Defau
2021-02-01 04:22:58
158
原创 Android-UI绘制分析01
Activity Window PhoneWindow DecorView 之前的关系 问题一:requestFeature为什么要在setContentView之前 问题二:他们之间的关系
2017-08-02 14:58:28
301
原创 Android事件(一)
1.dispatchTouchEvent 返回结果true或者false --ViewGroup:当一个Touch事件(触摸事件为例)到达根节点,即Acitivty的ViewGroup时,它会依次下发,下发的过程是调用子View(ViewGroup)的dispatchTouchEvent方法实现的。简单来说,就是ViewGroup遍历它包含着的子View,调用每个View的dispatchTou
2016-08-15 11:33:21
513
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人