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

Muk*_*ngh 9 android-context android-activity

我在android中有一个没有的应用程序.的活动.现在我需要非活动类中当前正在运行的活动的上下文.我怎么能得到它.

Abd*_*lah 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;
}

}
Run Code Online (Sandbox Code Playgroud)

  • 这个"解决方案"在您的应用程序中引入了一些错误,包括:内存泄漏和错误的引用.始终控制当前活动.有许多技术可以跟踪活动转换(或片段交易).这里的主要问题是因为您使用静态变量来保存您知道在任何时候都无效的实例. (3认同)
  • 这就是为什么我在代码中写了一条评论,说明在onPause中将当前活动设置为null并在onResume中再次设置它 (3认同)