重翻已生灰的Android书---对application的理解

1.application的作用?

application是Android应用的入口,保存应用进程内的全局变量,初始化操作,提供全局上下文,不用担心内存泄漏。application的生命周期和进程一样,进程在application就在,有几个进程就会创建几个application。

2.application生命周期

image.png

image.png
image.png

静态代理,mBase才是关键。
application执行顺序:构造函数-->attachBaseContex(Context base)-->onCreate()

3.application的初始化

application是最早被启动执行的,那么ActivityThread可以看一看。


image.png
image.png

bindApplication函数,将数据封装在AppBindData中,然后将数据发送出去


image.png

handleBindApplication中重点关注2个方法


image.png
image.png

传入的参数app就是makeApplication


image.png
image.png

在 attach函数中执行的就是 attachBaseContext(),所以mBase很关键。
不要早application构造函数中以及attachBaseContext()的super函数之前调用context,因为mBase没有初始化,一定是空指针异常。

注意application是单列,在makeApplication中

image.png

所以不要new MyApplication(),这样创建出来的只是一个普通的Java对象。application是系统组件,系统组件的实例是要由系统来去创建的,这样mBase会被赋值,context才不会为null。

记住mBase才是关键。

你可能感兴趣的:(重翻已生灰的Android书---对application的理解)