当我的应用程序进程被杀死后,是什么在保持我的活动状态?

3
我一直在运行一个消耗内存的应用程序,以测试我的程序的行为,强制我的应用程序被杀死。通过阅读在哪里保存了onSaveInstanceState的bundle?的答案,我对我看到的结果感到困惑。
该链接中给出的两个答案都暗示在需要回收内存时,被破坏的是单个活动而不是应用程序。但根据http://developer.android.com/guide/components/processes-and-threads.html ,被杀死的是进程而不是单个活动。由于所有组件通常在同一个进程中运行,我预计整个应用程序将在内存不足的情况下被杀死。我的测试与Android文档一致,因为当我运行我的内存消耗应用程序时,我不再看到该进程正在运行。
如果整个进程都被杀死,那么我是否正确地认为该问题中给出的答案是不正确的?但即便如此,当我恢复应用程序时,仍然有什么东西使我的Bundle保留下来?它真的保证永远不会写入磁盘吗?

我一直在通过运行一个消耗内存的应用程序来测试我的程序的行为,以迫使我的应用程序被杀死。现在,在设备的调试选项中有一个选项,可以在暂停时销毁所有活动。 - clocksmith
2个回答

7

那个链接中给出的两个答案都暗示在回收内存时会销毁单个活动而不是应用程序。

这是不正确的,尽管我自己对此也有很长一段时间的困惑。

依我之见,在那个问题上“只有三个答案中的至多一个暗示在回收内存时会销毁单个活动而不是应用程序。”

但如果是这样,那么当进程被杀死时,是什么让我的 Bundle 在恢复应用程序时保持不变呢?

有时,“没有任何东西“保留[你的] Bundle”。其他时候,操作系统中心的进程“保留[你的] Bundle”。

它确实保证不会写入磁盘吗?

不能“保证”,因为并未记录是否将其写入磁盘。如果确实写入了磁盘,则应由操作系统进程(而不是你的进程)完成,文件应对其他进程不可读。


2
虽然第一个答案没有明确说明单个活动被杀死,但它确实说当内存被收集时,包会“随应用程序一起销毁”。由于进程(以及应用程序)被销毁了,但是包显然没有被销毁,所以我认为该声明是错误的? - thebnich
2
@MasterNES:是的,我同意引用的声明是错误的。 - CommonsWare

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接