ApplicationProxy 代理类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012482178/article/details/85127634
使用方式:
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();
    }
}

猜你喜欢

转载自blog.csdn.net/u012482178/article/details/85127634