Android不会破坏后退按钮上的数据

时间:2011-07-27 16:57:20

标签: java android android-activity

在onCreate()方法中,我加载了一个级别列表。它存储在单例结构中(使用枚举)。当我按下后退按钮并再次返回时,列表仍然存在,并再次添加所有级别。我不明白为什么会发生这种情况,因为Activity Lifecycle表示在再次调用onCreate()之前该进程被终止。

为什么会这样?

编辑,一些代码:

在单独的文件中:

public enum GameInformation {
   INSTANCE;
       public List<Level> levelSet;

       public void loadLevelSet(Context context) {
       ...
       }
}

在主要活动中:

public void onCreate(Bundle savedInstanceState) {
    GameInformation.INSTANCE.loadLevelSet(this);
}

2 个答案:

答案 0 :(得分:7)

  

我不明白为什么会发生这种情况,因为Activity Lifecycle声明在重新调用onCreate()之前该进程被终止。

不,它没有。

当您通过BACK按钮销毁最后一个活动时,肯定不会立即杀死该过程。即使您没有活动组件,Android也会保持流程,以防用户碰巧想要快速返回应用程序。稍后,当Android需要RAM时,它将终止该过程。

您不应该对静态数据成员是否存在进行任何假设。如果它们为空,只是懒惰地初始化它们。

答案 1 :(得分:0)

使用后退按钮不会终止应用程序。它只将它设置为背景。实际上,当系统被检测为处于休眠状态时,系统会将其杀死。

因此,当您返回应用时,只需使用OnCreate()方法重新加载您的关卡。