android:如何从非activity / service类使用getApplication和getApplicationContext

我正在使用Android上的扩展应用程序类来在整个应用程序中共享我的数据。

我可以从我所有的活动中使用getApplication()方法。

但是,我创build了一些自定义的帮助类。 例如,不从任何活动/服务类inheritance的XMLHelper类。

这里getApplication()方法不可用。

我怎样才能解决这个问题,最好的devise方法是什么?

getApplication()方法位于Activity类中,这就是为什么你不能从你的helper类访问它。

如果你真的需要从助手访问你的应用程序上下文,你应该保持对活动的上下文的引用,并将其传递给助手。

getApplication()方法位于Activity类中,所以无论何时需要在非活动类中使用getApplication() ,都必须将Activity实例传递给该非活动类的构造函数。

假设testing是我的非活动类:

 Test test = new Test(this); 

在那个类中,我创build了一个构造函数:

  public Class Test { public Activity activity; public Test (Activity act) { this.activity = act; // Now here you can get getApplication() } } 

将一个Context对象转换成一个Activity对象编译正常。

尝试这个:

((Activity) mContext).getApplication(...)

要么通过一个上下文(所以你可以访问资源),或使辅助方法静态。

将活动上下文发送给其他类可能会导致内存泄漏,因为将该上下文保持为活动状态是GC不能处理该对象的原因

试试这个,在构造函数中调用活动

 public class WebService { private Activity activity; public WebService(Activity _activity){ activity=_activity; helper=new Helper(activity); } }