我正在使用扩展Application
类的模式来保存我的全局变量(https://stackoverflow.com/a/708317/1709805)。从我的Android组件(Activity
,Fragment
,Service
,ecc)我使用((MyApp) getApplicaction()
)访问它们,但在我的项目中,我有很多辅助类,其中我不能(显然)使用该方法。为了解决这个问题,我已经对一个返回Application的静态方法进行了decalred。这是代码:
public class MyApp extends Application{
private static MyApp app;
@Override
public void onCreate(){
super.onCreate();
app = this;
}
public static MyApp getApp() {
return app;
}
}
这是一个好模式吗?有什么建议以更好的方式实现我的目的吗?谢谢
答案 0 :(得分:3)
这是一种不好的做法。
在整个应用程序中使用MyApp app = (MyApp)getApplicationContext();
。
确保您已在 AndroidManifest.xml 文件的<{1}}标记中声明 MyApp
您需要做的是,当您想要访问其他非Android组件类中的<application>
对象时,请将MyApp app
作为MyApp app
传递给非Android组件类(Helper,来自Android组件类(活动,片段,服务等)的处理程序或其他Java类。