Application mInitialApplication;
public Application getApplication() {
return mInitialApplication;
}
private void handle 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》开源 BindApplication(AppBindData data) {
// …
Application app;
// data.info 为 LoadedApk.java
app = data.info.makeApplication(data.restrictedBackupMode, null);
// …
mInitialApplication = app;
// …
}
复制代码
可以看到,创建Application对象之后会保存在mInitialApplication属性中,那么如果我们可以访问到这个属性,是不是就可以获得Application对象了呢?
首先,我们需要获得ActivityThread对象,那么我们先在源码中寻找创建ActivityThread对象的地方:
ActivityThread.java
private static volatile ActivityThread sCurrentActivityThread;
public static ActivityThread currentActivityThread() {
return sCurrentActivityThread;
}
// (简化)
public static void main(String[] args) {