|
| 1 | +- [Handler](#handler) |
| 2 | + - [Handler机制实现原理(一)宏观理论分析与Message源码分析](#handler机制实现原理一宏观理论分析与message源码分析) |
| 3 | + - [Message:](#message) |
| 4 | + - [看一下全局变量:有好多存数据的对象。](#看一下全局变量有好多存数据的对象) |
| 5 | + - [Obtain方法:](#obtain方法) |
| 6 | + - [recycle():回收当前message到全局池](#recycle回收当前message到全局池) |
| 7 | + - [setData:](#setdata) |
| 8 | + - [发送消息的一些方法:](#发送消息的一些方法) |
| 9 | + - [构造方法:](#构造方法) |
| 10 | + - [writeToParcel:](#writetoparcel) |
| 11 | + - [Handler机制实现原理(二)MessageQueue的源码分析](#handler机制实现原理二messagequeue的源码分析) |
| 12 | + - [消息队列存储原理](#消息队列存储原理) |
| 13 | + - [使用JNI实现的native方法](#使用jni实现的native方法) |
| 14 | + - [创建与销毁](#创建与销毁) |
| 15 | + - [消息入队管理enqueueMessage()方法](#消息入队管理enqueuemessage方法) |
| 16 | + - [同步消息拦截器](#同步消息拦截器) |
| 17 | + - [队列空闲处理器IdleHandler](#队列空闲处理器idlehandler) |
| 18 | + - [消息出队管理next()方法](#消息出队管理next方法) |
| 19 | + - [总结](#总结) |
| 20 | + - [Handler机制实现原理(三)Looper的源码分析](#handler机制实现原理三looper的源码分析) |
| 21 | + - [创建与退出Looper](#创建与退出looper) |
| 22 | + - [运行Looper处理消息](#运行looper处理消息) |
| 23 | + - [总结](#总结-1) |
| 24 | + - [Handler机制实现原理(四)handler的源码分析](#handler机制实现原理四handler的源码分析) |
| 25 | + - [初始化](#初始化) |
| 26 | + - [发送消息](#发送消息) |
| 27 | + - [接收消息](#接收消息) |
| 28 | + - [内存泄漏的可能](#内存泄漏的可能) |
| 29 | + - [Handler机制实现原理(五)总结](#handler机制实现原理五总结) |
| 30 | + - [Message缓存池](#message缓存池) |
| 31 | + - [真正的阻塞发生在MessageQueue](#真正的阻塞发生在messagequeue) |
| 32 | + - [为什么推荐使用Handler实现线程间通信](#为什么推荐使用handler实现线程间通信) |
| 33 | +- [Binder](#binder) |
| 34 | + - [Binder原理(一)学习Binder前必须要了解的知识点](#binder原理一学习binder前必须要了解的知识点) |
| 35 | + - [Linux和Android的IPC机制种类](#linux和android的ipc机制种类) |
| 36 | + - [Linux中的IPC机制种类](#linux中的ipc机制种类) |
| 37 | + - [Android中的IPC机制](#android中的ipc机制) |
| 38 | + - [Linux和Binder的IPC通信原理](#linux和binder的ipc通信原理) |
| 39 | + - [Linux的IPC通信原理](#linux的ipc通信原理) |
| 40 | + - [Binder的通信原理](#binder的通信原理) |
| 41 | + - [为什么要使用Binder](#为什么要使用binder) |
| 42 | + - [为什么要学习Binder?](#为什么要学习binder) |
| 43 | + - [Binder原理(二)ServiceManager中的Binder机制](#binder原理二servicemanager中的binder机制) |
| 44 | + - [基于Binder通信的C/S架构](#基于binder通信的cs架构) |
| 45 | + - [MediaServer的main函数](#mediaserver的main函数) |
| 46 | + - [每个进程唯一的ProcessState](#每个进程唯一的processstate) |
| 47 | + - [ServiceManager中的Binder机制](#servicemanager中的binder机制) |
| 48 | + - [BpBinder和BBinder](#bpbinder和bbinder) |
| 49 | + - [解密IServiceManager](#解密iservicemanager) |
| 50 | + - [IServiceManager家族](#iservicemanager家族) |
| 51 | + - [小结](#小结) |
| 52 | + - [Binder原理(三)系统服务的注册过程](#binder原理三系统服务的注册过程) |
| 53 | + - [从调用链角度说明MediaPlayerService是如何注册的](#从调用链角度说明mediaplayerservice是如何注册的) |
| 54 | + - [writeTransactionData函数分析](#writetransactiondata函数分析) |
| 55 | + - [waitForResponse函数分析](#waitforresponse函数分析) |
| 56 | + - [小结](#小结-1) |
| 57 | + - [从进程角度说明MediaPlayerService是如何注册的](#从进程角度说明mediaplayerservice是如何注册的) |
| 58 | + - [总结](#总结-2) |
| 59 | + - [Binder原理(四)ServiceManager的启动过程](#binder原理四servicemanager的启动过程) |
| 60 | + - [ServiceManager的入口函数](#servicemanager的入口函数) |
| 61 | + - [打开binder设备](#打开binder设备) |
| 62 | + - [注册成为Binder机制的上下文管理者](#注册成为binder机制的上下文管理者) |
| 63 | + - [循环等待和处理client端发来的请求](#循环等待和处理client端发来的请求) |
| 64 | + - [总结](#总结-3) |
| 65 | + - [Binder原理(五)系统服务的获取过程](#binder原理五系统服务的获取过程) |
| 66 | + - [客户端MediaPlayerService请求获取服务](#客户端mediaplayerservice请求获取服务) |
| 67 | + - [服务端ServiceManager处理请求](#服务端servicemanager处理请求) |
| 68 | + - [总结](#总结-4) |
| 69 | + - [Binder原理(六)Java Binder的初始化](#binder原理六java-binder的初始化) |
| 70 | + - [Java Binder的JNI注册](#java-binder的jni注册) |
| 71 | + - [Binder类的注册](#binder类的注册) |
| 72 | + - [BinderInternal类的注册](#binderinternal类的注册) |
| 73 | + - [Binder原理(七)Java Binder中系统服务的注册过程](#binder原理七java-binder中系统服务的注册过程) |
| 74 | + - [将AMS注册到ServiceManager](#将ams注册到servicemanager) |
| 75 | + - [BinderInternal.getContextObject()](#binderinternalgetcontextobject) |
| 76 | + - [ServiceManagerNative.asInterface()](#servicemanagernativeasinterface) |
| 77 | + - [getIServiceManager().addService()](#getiservicemanageraddservice) |
| 78 | + - [引出JavaBBinder](#引出javabbinder) |
| 79 | + - [解析JavaBBinder](#解析javabbinder) |
| 80 | + - [Java Binder架构](#java-binder架构) |
| 81 | +- [Zygote](#zygote) |
| 82 | + - [Zygote(一):Android系统的启动过程及Zygote的启动过程](#zygote一android系统的启动过程及zygote的启动过程) |
| 83 | + - [init进程](#init进程) |
| 84 | + - [属性服务初始化与启动](#属性服务初始化与启动) |
| 85 | + - [设置进程信号处理](#设置进程信号处理) |
| 86 | + - [解析init配置文件](#解析init配置文件) |
| 87 | + - [Zygote进程启动](#zygote进程启动) |
| 88 | + - [SystemServer启动过程](#systemserver启动过程) |
| 89 | + - [Zygote(二):应用进程的启动过程](#zygote二应用进程的启动过程) |
| 90 | + - [Zygote监听客户端请求](#zygote监听客户端请求) |
| 91 | + - [AMS发送创建进程请求](#ams发送创建进程请求) |
| 92 | + - [Zygote接收信息并创建进程](#zygote接收信息并创建进程) |
| 93 | + - [启动Binder线程池](#启动binder线程池) |
| 94 | +- [AMS](#ams) |
| 95 | + - [AMS源码分析(一)Activity生命周期管理](#ams源码分析一activity生命周期管理) |
| 96 | + - [Activity的生命周期](#activity的生命周期) |
| 97 | + - [一个Activity从启动到销毁所经历的周期](#一个activity从启动到销毁所经历的周期) |
| 98 | + - [从一个Activity启动另一个Activity的生命周期](#从一个activity启动另一个activity的生命周期) |
| 99 | + - [源码分析](#源码分析) |
| 100 | + - [Binder](#binder-1) |
| 101 | + - [IdleHandler](#idlehandler) |
| 102 | + - [Activity在AMS中的标识](#activity在ams中的标识) |
| 103 | + - [启动过程时序图](#启动过程时序图) |
| 104 | + - [从AActivity跳转BActivity的生命周期分析](#从aactivity跳转bactivity的生命周期分析) |
| 105 | + - [AActivity#onPause](#aactivityonpause) |
| 106 | + - [BActivity#onCreate](#bactivityoncreate) |
| 107 | + - [BActivity#onStart](#bactivityonstart) |
| 108 | + - [BActivity#onResume](#bactivityonresume) |
| 109 | + - [AActivity#onStop](#aactivityonstop) |
| 110 | + - [从BActivity返回到AActivity](#从bactivity返回到aactivity) |
| 111 | + - [BActivity#onPause](#bactivityonpause) |
| 112 | + - [AActivity#onStart、AActivity#onResume](#aactivityonstartaactivityonresume) |
| 113 | + - [BActivity#onStop、BActivity#onDestroy](#bactivityonstopbactivityondestroy) |
| 114 | + - [AMS源码分析(二)onActivityResult执行过程](#ams源码分析二onactivityresult执行过程) |
| 115 | + - [onActivityResult](#onactivityresult) |
| 116 | + - [AActivity跳转BAcitivty并从BActivity返回数据](#aactivity跳转bacitivty并从bactivity返回数据) |
| 117 | + - [Intent.FLAG_ACTIVITY_FORWARD_RESULT](#intentflag_activity_forward_result) |
| 118 | + - [示例:](#示例) |
| 119 | + - [AActivity以startActivityForResult方式打开BActivity](#aactivity以startactivityforresult方式打开bactivity) |
| 120 | + - [BActivity以普通方式打开CActivity,设置Intent 的Flag Intent.FLAG_ACTIVITY_FORWARD_RESULT](#bactivity以普通方式打开cactivity设置intent-的flag-intentflag_activity_forward_result) |
| 121 | + - [源码解析](#源码解析) |
| 122 | + - [ActivityResult数据的写入](#activityresult数据的写入) |
| 123 | + - [ActivityResult数据的传递](#activityresult数据的传递) |
| 124 | + - [Intent.FLAG_ACTIVITY_FORWARD_RESULT的实现](#intentflag_activity_forward_result的实现) |
| 125 | + - [AMS源码分析(三)AMS中Activity栈管理详解](#ams源码分析三ams中activity栈管理详解) |
| 126 | + - [Activity栈管理相关类](#activity栈管理相关类) |
| 127 | + - [ActivityStackSupervisor](#activitystacksupervisor) |
| 128 | + - [ActivityDisplay](#activitydisplay) |
| 129 | + - [TaskRecord](#taskrecord) |
| 130 | + - [ActivityStack](#activitystack) |
| 131 | + - [关系图:](#关系图) |
| 132 | + - [启动模式](#启动模式) |
| 133 | + - [standard](#standard) |
| 134 | + - [Intent.FLAG_ACTIVITY_CLEAR_TOP](#intentflag_activity_clear_top) |
| 135 | + - [源码分析](#源码分析-1) |
| 136 | + - [加入TaskRecord](#加入taskrecord) |
| 137 | + - [standard + Intent.FLAG_ACTIVITY_CLEAR_TOP](#standard--intentflag_activity_clear_top) |
| 138 | + - [singleTop](#singletop) |
| 139 | + - [流程图:](#流程图) |
| 140 | + - [原Activity不在栈顶](#原activity不在栈顶) |
| 141 | + - [原Activity在栈顶](#原activity在栈顶) |
| 142 | + - [singleTop + Intent.FLAG_ACTIVITY_CLEAR_TOP](#singletop--intentflag_activity_clear_top) |
| 143 | + - [log](#log) |
| 144 | + - [原Activity不在栈顶](#原activity不在栈顶-1) |
| 145 | + - [原Activity在栈顶](#原activity在栈顶-1) |
| 146 | + - [原Actiivty在栈顶且设置Intent.FLAG_ACTIVITY_CLEAR_TOP](#原actiivty在栈顶且设置intentflag_activity_clear_top) |
| 147 | + - [源码分析](#源码分析-2) |
| 148 | + - [singleTop + Intent.FLAG_ACTIVITY_CLEAR_TOP](#singletop--intentflag_activity_clear_top-1) |
| 149 | + - [singleTask](#singletask) |
| 150 | + - [启动流程](#启动流程) |
| 151 | + - [场景一](#场景一) |
| 152 | + - [场景二](#场景二) |
| 153 | + - [场景三](#场景三) |
| 154 | + - [singeTask源码分析](#singetask源码分析) |
| 155 | + - [singleInstance](#singleinstance) |
| 156 | + - [Intent.FLAG_ACTIVITY_NEW_TASK、taskAffinity、新Task的创建](#intentflag_activity_new_tasktaskaffinity新task的创建) |
| 157 | + - [Intent.FLAG_ACTIVITY_NEW_TASK的自动设置](#intentflag_activity_new_task的自动设置) |
| 158 | + - [taskAffinity的识别](#taskaffinity的识别) |
| 159 | + - [是否创建新task的识别](#是否创建新task的识别) |
| 160 | + - [总结](#总结-5) |
| 161 | +- [PMS](#pms) |
| 162 | + - [深入PMS源码(一)—— PMS的启动过程和执行流程](#深入pms源码一-pms的启动过程和执行流程) |
| 163 | + - [PMS简介](#pms简介) |
| 164 | + - [PMS的启动过程](#pms的启动过程) |
| 165 | + - [PMS构造函数](#pms构造函数) |
| 166 | + - [PMS的工作过程](#pms的工作过程) |
| 167 | + - [解析配置文件package.xml](#解析配置文件packagexml) |
| 168 | + - [扫描安装的应用程序](#扫描安装的应用程序) |
| 169 | + - [将apk解析数据同步到PMS的属性中](#将apk解析数据同步到pms的属性中) |
| 170 | + - [更新配置文件](#更新配置文件) |
| 171 | + - [深入PMS源码(二)—— APK的安装和卸载源码分析](#深入pms源码二-apk的安装和卸载源码分析) |
| 172 | + - [应用程序安装基础](#应用程序安装基础) |
| 173 | + - [PMS中APK安装过程](#pms中apk安装过程) |
| 174 | + - [应用程序的卸载过程](#应用程序的卸载过程) |
| 175 | + - [深入PMS源码(三)—— PMS中intent-filter的匹配架构](#深入pms源码三-pms中intent-filter的匹配架构) |
| 176 | + - [PMS保存IntentFilter](#pms保存intentfilter) |
| 177 | + - [IntentFilter的查找匹配](#intentfilter的查找匹配) |
| 178 | +- [WMS](#wms) |
| 179 | + - [WMS(一):WMS的诞生](#wms一wms的诞生) |
| 180 | + - [WMS概述](#wms概述) |
| 181 | + - [窗口管理](#窗口管理) |
| 182 | + - [窗口动画](#窗口动画) |
| 183 | + - [输入系统的中转站](#输入系统的中转站) |
| 184 | + - [Surface管理](#surface管理) |
| 185 | + - [WMS的诞生](#wms的诞生) |
| 186 | + - [WMS(二):WMS的重要成员和Window的添加过程](#wms二wms的重要成员和window的添加过程) |
| 187 | + - [WMS的重要成员](#wms的重要成员) |
| 188 | + - [Window的添加过程(WMS部分)](#window的添加过程wms部分) |
| 189 | + - [addWindow方法part1](#addwindow方法part1) |
| 190 | + - [addWindow方法part2](#addwindow方法part2) |
| 191 | + - [addWindow方法part3](#addwindow方法part3) |
| 192 | + - [addWindow方法总结](#addwindow方法总结) |
| 193 | + - [结语](#结语) |
| 194 | + - [WMS(三):Window的删除过程](#wms三window的删除过程) |
| 195 | + - [Window的删除过程](#window的删除过程)# Handler |
| 196 | + |
1 | 197 | # Handler
|
2 | 198 |
|
3 | 199 | ## Handler机制实现原理(一)宏观理论分析与Message源码分析
|
|
0 commit comments