3

我一直在通过运行一个消耗内存的应用程序来测试我的程序的行为,该应用程序会强制我的应用程序被杀死。在阅读了onSaveInstanceState 捆绑包保存在哪里的答案后?,我对我看到的一些结果感到困惑。

该链接中给出的两个答案都暗示,当需要回收内存时,会破坏单个活动,而不是应用程序。但根据http://developer.android.com/guide/components/processes-and-threads.html,进程 - 而不是单个活动 - 被杀死。而且由于所有组件通常在同一个进程中运行,我希望整个应用程序在内存不足的情况下被杀死。我的测试与 Android 文档一致,因为当我运行我的内存消耗应用程序时,我不再看到该进程正在运行。

因此,如果整个过程被杀死,我是否正确假设该问题中给出的答案不正确?但是,如果是这样,如果进程被终止,当我恢复我的应用程序时,是什么让我的 Bundle 存在?真的保证永远不会写入磁盘吗?

4

2 回答 2

7

该链接中给出的两个答案都暗示,当需要回收内存时,会破坏单个活动,而不是应用程序。

这是不正确的,尽管我自己在这一点上困惑了很长时间。

恕我直言,该问题的三个答案中最多有一个“暗示当需要回收内存时会破坏单个活动,而不是应用程序”。

但是,如果是这样,如果进程被终止,当我恢复我的应用程序时,是什么让我的 Bundle 存在?

有时,没有什么是“保持 [your] Bundle 周围”。其他时候,操作系统的核心过程是“保留 [your] Bundle”。

真的保证永远不会写入磁盘吗?

不是“保证的”,因为没有记录它是否写入磁盘。如果它写入磁盘,它将由操作系统进程(不是你的)完成,并且该文件应该不被其他进程读取。

于 2012-09-18T00:15:16.207 回答
0

正如今天的文档所说,保存的实例状态被序列化到磁盘。

在此处输入图像描述

https://developer.android.com/topic/libraries/architecture/saving-states#options_for_preserving_ui_state

于 2020-04-13T21:37:33.310 回答