java - 一个让我困惑的Android场景

标签 java android arraylist

这就是我组织数据的方式:

  • 我已在 Android 项目中创建了一个 Application 类
  • 在应用程序类中,我有一个对象的 ArrayList
  • 在其他 Activity 中,我调用应用程序类的一些方法,这些方法返回给我上述列表的一部分

现在让我困惑的场景是: 在某个 Activity 中如果按下按钮

  1. 我检查是否有互联网连接
  2. 如果没有,我会启动一个 Intent,为用户打开“设置”以启用移动网络或 WiFi

当它返回时,虽然应用程序似乎被销毁了,因为再次调用了 onCreate,但当时我的 Application 类中的 arrayList 此时为 null。所以我的问题是

  • 为什么我的 Activity 被破坏而不只是暂停?
  • 如果它被破坏,为什么我的应用不会从头开始自行启动,而是仅从启动 Activity Action.Settings 的 Activity 启动?
  • 如果只是最新的Activity被销毁,而不是整个应用程序被销毁,为什么应用程序中的数据会丢失?

这就是我在应用程序类中声明对象的 ArrayList 的方式

        private static ArrayList<PointOfInterest> pois;

编辑:我在 Activity 的 onDestroy() 上放置了 Log.i() ,但它从未被打印。但是当我从设置返回时,onCreate()被调用(没有调用onDestroy),这怎么可能?

最佳答案

当应用程序处于后台时,操作系统可以使静态字段无效。 因此,它们应该始终被恢复。

see this post

关于java - 一个让我困惑的Android场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26039047/

相关文章:

android - 从内部存储读取 ArrayList

java - 如何迭代/导航字符集中的每个字符(例如,US-ASCII 或 IBM037,按正确的顺序)?

java - 根据 ID 和列表中的另一个 ID 查找记录

android - 如何共享使用 Volley 下载和缓存的图像?

android - 如何在布局中获得方形背景

java - List<String> 到 ArrayList<String> 的转换问题

java - 从 ArrayList 获取随机值

java - main 方法是否也在堆中分配?

android - 层次结构查看器在 google LG nexus 4 中不起作用?

java - 从 Java 类在 JSP 中显示 ArrayList