【发布时间】:2014-02-20 16:14:54
【问题描述】:
我向 ActivityManager 添加了一个静态字段并将其设置在我的活动中。当我退出我的活动并再次进入时,我发现该值已恢复为默认值。我想知道这是否意味着每个活动都有一个活动管理器实例?
基本上在 ActivityManager 中我添加了以下内容:
public static boolean s = false;
public void setS(boolean b) { s = b; }
public boolean getS() { return s; }
然后我编译了操作系统并在我的应用程序中使用反射来访问上述方法。如果我不退出我的应用程序,那么 setS 方法中设置的任何内容都会反映在 getS 方法中。如果我退出应用程序并再次进入,那么 getS 总是返回 false。想知道为什么?
任何帮助表示赞赏!
【问题讨论】:
-
因为你做了这个
static它不属于一个instance(在这个词的OO或Java含义中)而是属于一个process我>。鉴于您已经设法使用 JNI 访问它,它必须在您的应用程序自己的进程中,而不是在通过 IPC 与之交互的某个系统中。因此,这个变量的生命周期就是你的应用进程的生命周期。这几乎不会告诉您 ActivityManager 的正常工作方式。