这就是我组织数据的方式:
- 我已在 Android 项目中创建了一个 Application 类
- 在应用程序类中,我有一个对象的 ArrayList
- 在其他 Activity 中,我调用应用程序类的一些方法,这些方法返回给我上述列表的一部分
现在让我困惑的场景是: 在某个 Activity 中如果按下按钮
- 我检查是否有互联网连接
- 如果没有,我会启动一个 Intent,为用户打开“设置”以启用移动网络或 WiFi
当它返回时,虽然应用程序似乎被销毁了,因为再次调用了 onCreate,但当时我的 Application 类中的 arrayList 此时为 null。所以我的问题是
- 为什么我的 Activity 被破坏而不只是暂停?
- 如果它被破坏,为什么我的应用不会从头开始自行启动,而是仅从启动 Activity Action.Settings 的 Activity 启动?
- 如果只是最新的Activity被销毁,而不是整个应用程序被销毁,为什么应用程序中的数据会丢失?
这就是我在应用程序类中声明对象的 ArrayList 的方式
private static ArrayList<PointOfInterest> pois;
编辑:我在 Activity 的 onDestroy() 上放置了 Log.i() ,但它从未被打印。但是当我从设置返回时,onCreate()被调用(没有调用onDestroy),这怎么可能?
最佳答案
当应用程序处于后台时,操作系统可以使静态字段无效。 因此,它们应该始终被恢复。
关于java - 一个让我困惑的Android场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26039047/