在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);
}
答案 0 :(得分:7)
我不明白为什么会发生这种情况,因为Activity Lifecycle声明在重新调用onCreate()之前该进程被终止。
不,它没有。
当您通过BACK按钮销毁最后一个活动时,肯定不会立即杀死该过程。即使您没有活动组件,Android也会保持流程,以防用户碰巧想要快速返回应用程序。稍后,当Android需要RAM时,它将终止该过程。
您不应该对静态数据成员是否存在进行任何假设。如果它们为空,只是懒惰地初始化它们。
答案 1 :(得分:0)
使用后退按钮不会终止应用程序。它只将它设置为背景。实际上,当系统被检测为处于休眠状态时,系统会将其杀死。
因此,当您返回应用时,只需使用OnCreate()
方法重新加载您的关卡。