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