ContextWrapper中attachBaseContext()方法使用技巧。
ContextWrapper类的源码,ContextWrapper中有一个attachBaseContext()方法,这个方法会将传入的一个Context参数赋值给mBase对象,之后mBase对象就有值了。
Application中在onCreate()方法里去初始化各种全局的变量数据是一种比较推荐的做法,但是如果你想把初始化的时间点提前到极致,也可以去重写attachBaseContext()方法,如下所示:
1 2 3 4 5 6 7 8 9 10 | public class MyApplication extends Application { @Override protected void attachBaseContext(Context base) { // 在这里调用Context的方法会崩溃 super .attachBaseContext(base); // 在这里可以正常调用Context的方法 } } |