我一直在通过运行一个消耗内存的应用程序来测试程序的行为,该应用程序会强制终止我的应用程序。在阅读了Where is the bundle of onSaveInstanceState saved?的答案后,我对看到的一些结果感到困惑。
该链接中给出的两个答案都意味着,当需要回收内存时,单个活动(而不是应用程序)将被销毁。但是根据http://developer.android.com/guide/components/processes-and-threads.html,过程-而不是单个活动-被杀死。由于所有组件通常在同一个进程中运行,所以我希望整个应用程序在内存不足的情况下被终止。我的测试与android文档一致,因为当我运行内存消耗应用程序时,我不再看到进程在运行。
所以,如果整个过程都被扼杀了,我假设这个问题中给出的答案是错误的,这是正确的吗?但如果是这样的话,如果程序被终止了,当我恢复我的申请时,是什么让我的包在身边呢?它真的保证永远不会写到磁盘上吗?
最佳答案
该链接中给出的两个答案都意味着,当需要回收内存时,单个活动(而不是应用程序)将被销毁。
这是不正确的,尽管我在这一点上困惑了很长一段时间。
imho,这个问题的三个答案中最多有一个“意味着当需要回收内存时,单个活动(而不是应用程序)会被破坏”。
但如果是这样的话,如果程序被终止了,当我恢复我的申请时,是什么让我的包在身边呢?
有时候,没有什么是“把你的包裹放在身边”。其他时候,操作系统的一个核心过程是“保持包在周围”。
它真的保证永远不会写到磁盘上吗?
不是“保证”,因为它没有记录是否写入磁盘。如果它被写入磁盘,那么它将由一个操作系统进程(而不是您的进程)完成,并且该文件应该是其他进程无法读取的。