使用方式:
ApplicationProxy.getInstance().getApplication();
ApplicationProxy.getInstance().getApplicationContext();
需要要在
public class BaseApplication extends Application{
ApplicationProxy.getInstance().setApplication(this);
}
建议把这个代理类放到组件化最底层那个model下,在这model之上的包,需要使用getApplication/getApplicationContext
的地方都要使用上面的方式获取,保证统一性,正确性。源码如下:
public class ApplicationProxy {
private static Application mApp;
public void setApplication(Application app) {
if (null == app) {
throw new IllegalArgumentException("The app can not be null!");
}
mApp = app;
}
public Application getApplication() {
if (null == mApp) {
throw new IllegalArgumentException("The app is null, need call setApplication in Host*Application attachBase_Fun");
}
return mApp;
}
public Context getApplicationContext() {
if (null == mApp) {
throw new IllegalArgumentException("The app is null, need call setApplication in Host*Application attachBase_Fun");
}
return mApp.getApplicationContext();
}
public static ApplicationProxy getInstance() {
return SingletonHolder.instance;
}
private static class SingletonHolder {
private static final ApplicationProxy instance = new ApplicationProxy();
}
}