我正在编写一个简单的 android 应用程序,它基本上是对 android 文档中可用的片段演示的修改。在应用程序中,有一个名为 Ipsum.java 的文件,其中有一个名为 Headlines 的静态字符串数组列表。
在主要活动的 onCreate() 方法中,我有以下代码将一些元素添加到数组列表中。
if (savedInstanceState == null){
Ipsum.Headlines.add("String 1 ");
Ipsum.Headlines.add("String 2");
}
如果应用程序从某个非活动状态恢复,则 savedInstanceState 是系统传递给方法的 Bundle。逻辑是如果 savedInstanceState 为 null,则应用程序不会被恢复,而是作为新实例启动。
如果我使用“主页”按钮离开应用程序并重新进入应用程序,则 arrayList 仅包含两个元素:“字符串 1”和“字符串 2”。(这是所需的行为)
但是,如果我使用后退按钮离开应用程序,然后重新进入应用程序,则会再次添加“字符串 1”和“字符串 2”元素。然后数组有 4 个元素。
String 1
String 2
String 1
String 2
(可以看到arrayList的内容,因为它们用于填充listView)似乎应用程序在按下后退按钮时正在存储静态数组列表的内容..并且没有将Bundle传递给onCreate () 应用程序重新启动时的方法。有人可以根据应用程序生命周期解释这里发生了什么吗?