android: how to use getApplication and getApplicationContext from non activity / service class
我正在Android上使用扩展应用程序类来在整个应用程序中共享我的数据。
我可以在所有活动中使用
但是,我创建了一些自定义帮助程序类; 例如,一个
这里的
我该如何解决这个问题以及解决这个问题的最佳设计方法是什么?
如果您确实需要从帮助程序访问应用程序上下文,则应该保留对活动上下文的引用,并将其调用传递给帮助程序。
假设测试是我的非活动类:
1 | Test test = new Test(this); |
在那个类中,我创建了一个构造函数:
1 2 3 4 5 6 7 8 9 | public Class Test { public Activity activity; public Test (Activity act) { this.activity = act; // Now here you can get getApplication() } } |
将Context对象转换为Activity对象可以很好地编译。
试试这个:
<5233>
为了避免传递这个参数,我使用派生自Application的类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class MyApplication extends Application { private static Context sContext; @Override public void onCreate() { super.onCreate(); sContext= getApplicationContext(); } public static Context getContext() { return sContext; } |
并在Helper类中调用
传入上下文(以便您可以访问资源),或使辅助方法保持静态。
将活动上下文发送到其他类可能会导致内存泄漏,因为保持该上下文活动是GC无法处置该对象的原因
试试这个,在构造函数中调用activity
1 2 3 4 5 6 7 8 9 | public class WebService { private Activity activity; public WebService(Activity _activity){ activity=_activity; helper=new Helper(activity); } } |