android - 一旦我的应用程序进程被终止,什么会保持我的 Activity 状态?

标签 android android-activity

我一直在通过运行一个强制终止我的应用程序的内存占用应用程序来测试我的程序的行为。阅读 Where is the bundle of onSaveInstanceState saved? 的答案后, 我对看到的一些结果感到困惑。

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

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

最佳答案

Both answers given in that link imply that individual activities, not applications, are destroyed when memory needs to be reclaimed.

这是不正确的,虽然我自己在这一点上很困惑很长一段时间。

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

But if so, what's keeping my Bundle around when I resume my application if the process was killed?

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

Is it really guaranteed to never be written to disk?

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

关于android - 一旦我的应用程序进程被终止,什么会保持我的 Activity 状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12468717/

相关文章:

java - 在Android上使用圆形 ImageView

android - 如何阻止 LogCat 输出在 Eclipse 中自动滚动?

android - getIntent().getExtras() 有时会在 Activity 中崩溃

c# - Xamarin Android - 从另一个 Activity 更新一个 Activity 的 UI 控制

android 整数值从一个 Activity 传递到另一个问题

android - 多个 Activity 上的 AsyncTask?

java - 如何在调试应用程序时检查当前正在运行哪个 Activity

java - 如何向所有在 Firebase 注册的用户发送推送通知?

android - 将动画应用于仅进入 Activity android

Android:图标不会出现在操作栏中