Skip to content

Commit 5c0fc99

Browse files
committed
update
1 parent 9aa8fd6 commit 5c0fc99

File tree

1 file changed

+47
-47
lines changed
  • OperatingSystem/AndroidKernal/Framework

1 file changed

+47
-47
lines changed

OperatingSystem/AndroidKernal/Framework/ReadMe.md

Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -106,16 +106,16 @@ AMS即ActivityManagerService,AMS是Android中最核心的服务,主要负责
106106

107107
+ 参考资料[《AMS在Android起到什么作用?》](https://zhuanlan.zhihu.com/p/86266649)
108108

109-
### 第2章 应用进程相关问题
109+
#### 第2章 应用进程相关问题
110110

111111
本章主要讲解应用进程的启动,以及伴随进程启动过程中的一些重要机制的初始化原理,比如binder机制,Application,以及Context等方面的面试问题。
112-
#### 1 Android应用进程是怎么启动的吗?
113-
##### 冷启动与热启动
112+
##### 1 Android应用进程是怎么启动的吗?
113+
###### 冷启动与热启动
114114
Activity启动过程中,一般会牵涉到应用启动的流程。应用启动又分为冷启动和热启动。
115115
+ 冷启动:点击桌面图标,手机系统不存在该应用进程,这时系统会重新fork一个子进程来加载Application并启动Activity,这个启动方式就是冷启动。
116116
+ 热启动:应用的热启动比冷启动简单得多,开销也更低。在热启动中,因为系统里已有该应用的进程,所以系统的所有工作就是将您的 Activity 带到前台。 冷启动是应用完全从0开始启动,涉及到更多的内容,所以就应用冷启动的过程展开讨论。
117117

118-
##### 应用启动流程(冷启动)
118+
###### 应用启动流程(冷启动)
119119
![](./imgs/activy_start.jpeg)
120120
+ 启动进程
121121
+ 点击图标发生在Launcher应用的进程,startActivity()函数最终是由Instrumentation通过Android的Binder跨进程通信机制 发送消息给 system_server 进程;
@@ -127,14 +127,14 @@ Activity启动过程中,一般会牵涉到应用启动的流程。应用启动
127127
+ mStackSupervisor#attachApplicationLocked()方法中调用 ActivityThread#ApplicationThread#scheduleLaunchActivity()方法,进而通过主线程Handler消息通知创建 Activity 对象,然后再调用 mInstrumentation#callActivityOnCreate()执行 Activity#onCreate() 生命周期
128128
+ 布局&绘制 源码流程可以参考Android View 的绘制流程分析及其源码调用追踪
129129

130-
##### 参考资料
130+
###### 参考资料
131131
+ [《Android应用启动流程分析》](https://zhuanlan.zhihu.com/p/596546019)
132132
+ [《Android应用进程的创建 — Activity的启动流程》](https://www.jianshu.com/p/0875116e2e54)
133133

134-
#### 2 应用是怎么启用Binder机制的
134+
##### 2 应用是怎么启用Binder机制的
135135

136136

137-
#### 3 谈谈对Application的理解
137+
##### 3 谈谈对Application的理解
138138
Application的作用
139139
+ 保存应用进程中的全局变量
140140
Application会横跨进程的生命周期,我们可以在Application中维护一些全局变量
@@ -143,7 +143,7 @@ Application的作用
143143
+ 提供应用的上下文
144144
Application可以提供一个稳定的context,而且因为Application的生命周期横跨整个应用的生命周期,所以不需要担心Application的context内存泄漏的问题
145145

146-
#### 4 谈谈对Context的理解
146+
##### 4 谈谈对Context的理解
147147
Context的字面含义是上下文环境。应用的上层代码通过Context类提供的接口来操作Android的4大组件和资源。在Android的应用程序中,Context无处不在,很多接口都要求用Context对象作为参数。
148148
![](./imgs/context.jpeg)
149149

@@ -163,86 +163,86 @@ Activity、Service和Application这三种类型的Context都是可以通用的
163163
返回当前的Activity实例,如果是UI控件需要使用Activity作为Context对象,但是默认的Toast实际上使用ApplicationContext也可以。
164164
+ getApplication()和getApplicationContext()
165165
它们得到的是同一个对象。getApplication()只能在Activity和Service中得到。在BroadcastReciver必须使用getApplicationContext()。
166-
##### 参考资料
166+
###### 参考资料
167167
+ [《如何理解Context?》](https://zhuanlan.zhihu.com/p/27163977)
168168

169-
### 第3章 Activity组件相关问题
169+
#### 第3章 Activity组件相关问题
170170

171171
这一章主要讲解Activity相关的机制,包括Activity的启动流程,显示原理等相关面试问题,通过本章的学习,我们不但能熟悉它,更能深入了解它。
172-
#### 1 说说Activity的启动流程
173-
#### 2 说说Activity的显示原理
174-
#### 3 应用的UI线程是怎么启动的
172+
##### 1 说说Activity的启动流程
173+
##### 2 说说Activity的显示原理
174+
##### 3 应用的UI线程是怎么启动的
175175

176-
### 第4章 其它应用组件相关面试问题
176+
#### 第4章 其它应用组件相关面试问题
177177

178178
本章主要讲除了Activity之外的应用组件相关面试问题,包括service的启动和绑定原理,静态广播和动态广播的注册和收发原理,provider的启动和数据传输原理等等。
179-
#### 1 说说service的启动原理
179+
##### 1 说说service的启动原理
180180

181-
#### 2 说说service的绑定原理-1
181+
##### 2 说说service的绑定原理-1
182182

183-
#### 3 说说service的绑定原理-2
183+
##### 3 说说service的绑定原理-2
184184

185-
#### 4 说说动态广播的注册和收发原理
185+
##### 4 说说动态广播的注册和收发原理
186186

187-
#### 5 说说静态广播的注册和收发原理
187+
##### 5 说说静态广播的注册和收发原理
188188

189-
#### 6 说说Provider的启动原理
189+
##### 6 说说Provider的启动原理
190190

191-
### 第5章 UI体系相关问题
191+
#### 第5章 UI体系相关问题
192192

193193
本章主要讲UI体系相关面试问题,包括UI刷新机制,涉及到vsync和choreographer原理。另外还会讲到surface的相关原理,涉及到应用和WMS、surfaceFlinger通信。
194-
#### 1 说说屏幕刷新的机制-1
194+
##### 1 说说屏幕刷新的机制-1
195195

196-
#### 2 说说屏幕刷新的机制-2
196+
##### 2 说说屏幕刷新的机制-2
197197

198-
#### 3 surface跨进程传递原理
198+
##### 3 surface跨进程传递原理
199199

200-
#### 4 surface的绘制原理
200+
##### 4 surface的绘制原理
201201

202-
#### 5 你对vsync机制有了解吗?
202+
##### 5 你对vsync机制有了解吗?
203203

204-
#### 6 SurfaceView & View的区别,底层原理有何不同
204+
##### 6 SurfaceView & View的区别,底层原理有何不同
205205

206-
### 第6章 进程通信相关面试问题
206+
#### 第6章 进程通信相关面试问题
207207

208208
本章主要讲进程通信相关面试问题,包括binder的整体架构和通信原理,oneway机制,binder对象的传递等等。
209-
#### 1 Android Framework用到了哪些跨进程通信方式
209+
##### 1 Android Framework用到了哪些跨进程通信方式
210210

211-
#### 2 谈谈你对Binder的理解
211+
##### 2 谈谈你对Binder的理解
212212

213213
#### 3 一次完整的ipc通信流程是怎样的
214214

215-
#### 4 binder对象跨进程传递原理是怎么样的
215+
##### 4 binder对象跨进程传递原理是怎么样的
216216

217-
#### 5 说一说binder的oneway机制
217+
##### 5 说一说binder的oneway机制
218218

219-
### 第7章 线程通信相关面试问题
219+
#### 第7章 线程通信相关面试问题
220220

221221
本章主要讲线程通信原理相关面试问题,包括消息队列的创建,消息循环机制,消息延时,同步和异步消息,消息屏障等等内容。
222-
#### 1 线程的消息队列是怎么创建的?
222+
##### 1 线程的消息队列是怎么创建的?
223223

224-
#### 2 说说android线程间消息传递机制
224+
##### 2 说说android线程间消息传递机制
225225

226-
#### 3 handler的消息延时是怎么实现的?
226+
##### 3 handler的消息延时是怎么实现的?
227227

228-
#### 4 说说idleHandler的原理
228+
##### 4 说说idleHandler的原理
229229

230-
#### 5 主线程进入loop循环了为什么没有ANR?
230+
##### 5 主线程进入loop循环了为什么没有ANR?
231231

232-
#### 6 听说过消息屏障么?
232+
##### 6 听说过消息屏障么?
233233

234-
#### 7 多线程间通信和多进程之间通信有什么不同,分别怎么实现?
234+
##### 7 多线程间通信和多进程之间通信有什么不同,分别怎么实现?
235235

236-
### 第8章 技巧,心得相关
236+
#### 第8章 技巧,心得相关
237237

238238
除了上面章节之外的所有问题,都会放在本章讲到,除了原理之外,还会分享一些代码技巧。
239-
#### 1 怎么跨进程传递大图片
239+
##### 1 怎么跨进程传递大图片
240240

241-
#### 2 说说threadLocal的原理
241+
##### 2 说说threadLocal的原理
242242

243-
#### 3 来说说looper的副业
243+
##### 3 来说说looper的副业
244244

245-
#### 4 怎么检查线程有耗时任务
245+
##### 4 怎么检查线程有耗时任务
246246

247-
#### 5 怎么同步处理消息
248-
#### 6 主线程&ApplicationThread
247+
##### 5 怎么同步处理消息
248+
##### 6 主线程&ApplicationThread

0 commit comments

Comments
 (0)