在销毁应用程序时保留静态成员值正常吗?



我意外地意识到我的静态类成员在应用程序完成后被保留(调用onDestroy()之后)。静态成员初始化将在下一次应用程序实例化中被忽略。这是正常的还是只是模拟器中的一个bug ?我在文档中找不到任何相关信息。他们是否指定了与此行为相关的任何内容?

额外的评论:当我在activity中有两个字段,静态和非静态,像这样:

static String s1 = new String("s1");
String s2 = new String("s2");

…然后销毁并再次启动应用程序,第一个初始化器没有执行,第二个执行了。意义在哪里?对我来说,这违反了语言规则。

onDestroy并不意味着应用程序的进程被终止,或者类本身被销毁/卸载,它正在销毁一个活动实例

当一个应用程序启动时,它自己的vm启动,主活动启动。当该活动被搁置时(例如:按下返回键或调用finish()) onDestroy()被执行。

虽然这在技术上结束了您的应用程序,但您的应用程序进程和vm仍在运行。这包括运行线程。

因此所有静态成员保持完整。当虚拟机需要更多内存时,系统可以在它不显示的任何时候杀死它。

最新更新