本文 参考 郭大神 http://blog.csdn.net/sinyu890807/article/details/47028975 进行精简总结
ContextWrapper为上下文功能的封装类
ContextImpl为上下文功能的实现类
ContextWrapper又有三个直接子类,是Application、Service、ContextThemeWrapper
ContextThemeWrapper是一个带主题的封装类,直接子类是Activity
所以 Context 分为三种 Application、Service、Activity,具体的功能实现由ContextImpl类来实现
Context数量 = Activity数量 + Service数量 + 1Application
Application是Context的一个子类,全局只有一个,本身已经为一个单例
getApplication()和getApplicationContext()都是返回Application对象
getApplicationContext()作用域大于getApplication() : getApplication()只有在Activity和Service中才能调用到
任何一个Context实例,只要调用getApplicationContext() 都能拿到Application的对象
ContextWrapper.attachBaseContext() 方法由系统调用,传入一个Context参数赋值给mBase对象
Application中方法的执行顺序:
可以在Application的onCreate()中初始化各种全局变量