android - 如何从非前台的 Activity 访问当前上下文?

标签 android android-context

我正在进行 Activity A,监听是否有人摇动设备。即使用户处于 Activity B 中,这种情况也可能发生。当设备摇晃时,我需要显示一个进度对话框,因此需要正确的上下文。就像 Activity A 中的 shake 函数一样,有时我用于上下文的 this 关键字似乎不正确(因为我猜测它的 Activity B 是正确的上下文),并且出现某种窗口异常错误 token ...

我继续... Activity B 是前台。用户摇动设备。 Activity A 正在对震动使用react并想要显示一些内容,但 Activity A 当前不是前台。使用 this 关键字作为当前上下文的 Activity A 有时会因窗口异常错误标记而崩溃。如何获得正确且稳定的上下文?

最佳答案

您可以将 Activity A 的上下文保存在 Application 类中,该类充当全局单例。

public class ApplicationController extends Application {
   private static ApplicationController _appCtrl;
   private Context mActivityAContext;

   public static ApplicationController getAppCtrl()
   {
       return _appCtrl;
   }

   public void setContextForActivityA(Context context) 
   {
       mActivityAContext = context;
   }

   public Context getContextForActivityA()
   {
       return mActivityAContext;
   }

   public void onCreate() 
   {
       // Initialize the AppController class
       super.onCreate();
   ApplicationController._appCtrl = this;
   }

}

现在您可以在 setter 方法中设置 Activity A 的上下文,并通过以下方式从应用程序中的任何位置获取它:

ApplicationController.getContextForActivityA();

但是当您将 Activity 上下文传递给其他 Activity 时,请务必小心内存泄漏。请参阅link text

关于android - 如何从非前台的 Activity 访问当前上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4397547/

相关文章:

android wear 表盘手

java - 下面带有滚动和编辑文本的弹出菜单

java - 如何使用 Intent() 无参数构造函数

java - 从非 Activity 单例类获取应用程序上下文

java - 从 Activity 传递给非 Activity 构造函数的上下文实例是什么?

android - 如何正确地动态检查android权限

javascript - REST - 如何限制未授权客户端软件的访问

java - 安卓。从文件中读取内容

android - PubNub 订阅回调错误

java - Android TTS 中没有声音 - 上下文错误?