Android:使用静态方法获取应用程序

时间:2013-02-21 09:34:04

标签: android

我正在使用扩展Application类的模式来保存我的全局变量(https://stackoverflow.com/a/708317/1709805)。从我的Android组件(ActivityFragmentService,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;
  }
}

这是一个好模式吗?有什么建议以更好的方式实现我的目的吗?谢谢

1 个答案:

答案 0 :(得分:3)

这是一种不好的做法。

在整个应用程序中使用MyApp app = (MyApp)getApplicationContext();

确保您已在 AndroidManifest.xml 文件的<{1}}标记中声明 MyApp

您需要做的是,当您想要访问其他非Android组件类中的<application>对象时,请将MyApp app作为MyApp app传递给非Android组件类(Helper,来自Android组件类(活动,片段,服务等)的处理程序或其他Java类。