1.application的作用?
application是Android应用的入口,保存应用进程内的全局变量,初始化操作,提供全局上下文,不用担心内存泄漏。application的生命周期和进程一样,进程在application就在,有几个进程就会创建几个application。
2.application生命周期
image.pngimage.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。
网友评论