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

Android:使用静态方法获取应用程序,android,Android,我正在使用扩展应用程序类的模式来保存全局变量()。从我的Android组件(活动,片段,服务,ecc)中,我使用((MyApp)GetApplication())访问它们,但在我的项目中,我有很多助手类,我(显然)无法使用该方法。为了解决这个问题,我标记了一个返回应用程序的静态方法。代码如下: public class MyApp extends Application{ private static MyApp app; @Override public void onCrea

我正在使用扩展
应用程序
类的模式来保存全局变量()。从我的Android组件(
活动
片段
服务
,ecc)中,我使用(
(MyApp)GetApplication()
)访问它们,但在我的项目中,我有很多助手类,我(显然)无法使用该方法。为了解决这个问题,我标记了一个返回应用程序的静态方法。代码如下:

public class MyApp extends Application{

  private static MyApp app;

  @Override
  public void onCreate(){
      super.onCreate();
      app = this;
  }

  public static MyApp getApp() {
      return app;
  }
}
这是一个好的模式吗?有什么建议可以更好地达到我的目的吗?谢谢你

这是个坏习惯

只需使用,
MyApp-app=(MyApp)getApplicationContext()在整个应用程序中

确保您已在AndroidManifest.xml文件的
标记中声明了MyApp

您需要做的是,当您想要访问其他非Android组件类中的
MyApp-app
对象时,将
MyApp-app
作为构造函数或方法的
参数从Android组件类(活动、片段、服务等)传递给非Android组件类(助手、处理程序或其他Java类).

这是一种不好的做法

只需使用,
MyApp-app=(MyApp)getApplicationContext()在整个应用程序中

确保您已在AndroidManifest.xml文件的
标记中声明了MyApp


您需要做的是,当您想要访问其他非Android组件类中的
MyApp-app
对象时,将
MyApp-app
作为构造函数或方法的
参数从Android组件类(活动、片段、服务等)传递给非Android组件类(助手、处理程序或其他Java类).

好的。。我已经评估了这种可能性。这是一个肯定有效的解决方案。。但是我非常懒惰,所以我不希望将MyApp的引用传递给每个类或方法;)。为什么我的方法如此错误?好的。。我已经评估了这种可能性。这是一个肯定有效的解决方案。。但是我非常懒惰,所以我不希望将MyApp的引用传递给每个类或方法;)。为什么我的方法如此错误?