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); } }