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

标签 java android android-activity

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

为什么会发生这种情况?

编辑一些代码:

在单独的文件中:

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

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

在主要 Activity 中:

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

最佳答案

I don't understand why this is happening, since the Activity Lifecycle states that the process is killed before onCreate() is called again.

不,事实并非如此。

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

您不应该对静态数据成员是否存在做出任何假设。如果它们为空,只需延迟初始化它们。

关于java - Android 不会破坏后退按钮上的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6848260/

相关文章:

java - 在 Java 中过度使用 get() 是否效率低下?

java - 合并 JPA 实体返回旧值

android - Facebook通知重定向到外部URL

android - 如何在 AOSP 中按名称查找 Android 模块?

java - Android 系统 OnDestroy my Activity 在后台

java - Android SMS BroadcastReceiver NullPointer

java - Jersey - 请求的资源(未找到)不可用

android - 如何将字节数组从 android java 类传递到 JNI C NDK?

android - 将 OpenCV 图像(或位图)从服务发送到 Activity (SurfaceView)

android - 将数据从服务发送到 Activity Android