android - "saved states"是如何工作的? (安卓)

标签 android serialization operating-system

我刚刚读了一篇非常有趣的文章,内容是关于 android(我假设其他操作系统)在内存不足时如何工作。这在理论上是如何完成的?是不是类似于Java的对象序列化?

最佳答案

一句话:是的。

再多说几句,有点。你必须手动处理比我个人想要的更多的东西。本质上,Android 为您提供的所有内容都是一个散列,用于推送一些由字符串引用的可序列化对象,保证在应用程序关闭时是安全的。因此,无论何时发生您希望在应用程序关闭期间保留的事情,您都需要负责更新这个已保存的状态散列(并让 Android 知道您已经这样做了)。这包括诸如表单字段中未完成的文本输入之类的事情。这意味着您有很多东西要听。

然后 Android 将在您的 Activity 中调用一个特定的 Hook ,该 Hook 在它回收您的应用程序时处理将状态恢复到 Activity 并且您需要这样做。并非所有回收都会发生这种情况 - 您的应用程序存在各种存在/存在状态。

棘手的部分是,因为无论如何你都应该做这种乏味的工作,Android 变得懒惰并实现屏幕旋转之类的东西作为你的应用程序的完全回收。

一旦你习惯了,我会让它听起来比实际情况更糟;在 Java 和移动计算的范围内,这确实是一个不错的解决问题的方法。

当然,这是针对Android的回应。其他(桌面)操作系统依靠虚拟内存和分页来处理内存限制。

关于android - "saved states"是如何工作的? (安卓),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2589715/

相关文章:

java - 如何在文件中存储 SoapObject 或 Envelope

android - 为什么 GridView 需要一个 BaseAdapter?

Android 开发 - 将图像调整到可绘制文件夹中

android - Android中触发器和事件有什么区别

ruby-on-rails - rails : Serialize value as comma-separated and not as YAML

java - 使用 Kryo 序列化任意 Java 对象(获取 IllegalAccessError)

c - 控制台程序应该在关闭时释放它的资源吗?

linux - 在重定向时,重定向的页面是否得到处理?

python - 如何在系统文件夹的 Windows 资源管理器中按创建日期对子文件夹和文件的内容进行排序并进行更改(排序依据)?

java - 你如何使用计时器在 android 中制作秒表?