android:如何使用非活动/服务类的getApplication和getApplicationContext

android: how to use getApplication and getApplicationContext from non activity / service class

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

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

但是,我创建了一些自定义帮助程序类; 例如,一个XMLHelper类,它不从任何活动/服务类继承。

这里的getApplication()方法不可用。

我该如何解决这个问题以及解决这个问题的最佳设计方法是什么?


getApplication()方法位于Activity类中,这就是您无法从助手类访问它的原因。

如果您确实需要从帮助程序访问应用程序上下文,则应该保留对活动上下文的引用,并将其调用传递给帮助程序。


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

假设测试是我的非活动类:

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类中调用MyApplication.getContext()


传入上下文(以便您可以访问资源),或使辅助方法保持静态。


将活动上下文发送到其他类可能会导致内存泄漏,因为保持该上下文活动是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);

        }
}