在非活动类中获取当前活动上下文

9

我有一个安卓应用程序,其中包含多个活动。现在我需要在非活动类中获取当前运行活动的上下文。该怎么做呢?

1个回答

17

您可以使用Application类:

public class MyApplication extends Application {
private static Context context;
private static Activity activity;

public void onCreate() {
    super.onCreate();
    MyApplication.context = getApplicationContext();
}

public synchronized static Context getAppContext() {
    return MyApplication.context;
}

/**
 * setCurrentActivity(null) in onPause() on each activity 
 * setCurrentActivity(this) in onResume() on each activity
 * 
 */

public static void setCurrentActivity(Activity currentActivity) {
    activity = currentActivity;
}

public static Activity currentActivity() {
    return activity;
}

}

4
这个“解决方案”在您的应用程序中引入了几个错误,包括内存泄漏和错误引用。始终将控制权交给当前活动。有许多技术可用于跟踪活动转换(或片段事务)。主要问题在于您正在使用静态变量来保存实例,而您知道这些实例随时都可能无效。 - marciowb
3
因此,我在代码中写了一条注释,说在onPause中将当前活动设置为null,在onResume中再次设置它。 - Abdullah
1
我认为这个解决方案是有效的。还有其他人尝试过它,是否遇到了问题? - Sagar Trehan
在不改变活动代码的情况下,我们如何获得应用程序中当前正在运行的活动? - inquisitive
如果您已经在扩展类(例如ContentProvider),那该怎么办? - authentictech

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接