Android Framework学习之Application

1.了解Application的作用

2.熟悉Application的类继承关系以及生命周期

3.深入理解Application的初始化原理

Application的生命周期和应用进程的生命周期一样长。一般用于保存应用进程内的全局变量,做一些初始化操作,提供应用上下文。

Application的所有context的调用都是通过mBase处理的,这里用到了java的静态代理。

ActivityThread的attach函数向AMS发起binder调用传入应用的binder句柄,AMS收到请求后会调用attachApplicationLocked函数。

AMS向应用发起ipc调用,把参数封装到AppBindData里发消息让应用端在主线程里处理创建Application


为Application创建context,然后在把context传入到创建的Application里

创建的application其实只是个空壳,它的上下文是attach传入的,attachBaseContext函数就是给mBase赋值。

再来看一下流程

为什么不要在Application的生命周期回调里进而执行耗时操作?

因为AMS向应用发起的调用是oneway的,而bindApplication函数是在应用主线程里执行的,所以耗时操作会阻塞线程,也会影响bindApplication之后的组件启动。

你可能感兴趣的:(Android Framework学习之Application)