我正在进行 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/