我刚刚阅读了一篇非常有趣的文章,关于android(以及我假设其他操作系统)如何在内存不足时工作。这在理论上是如何完成的?它与Java的对象序列化类似吗?“救国”如何运作? (Android)
回答
总之:是的。
再多几个字,排序。你必须手动处理更多的信息,而不是我个人喜欢的。从本质上讲,所有Android为你提供的是一个哈希,用于推送一些由字符串引用的可序列化对象,这在跨应用程序关闭时保证是安全的。因此,无论什么时候发生想要在应用程序关闭时保留的事情,您都有责任更新此保存的状态散列(并让Android知道您已经这样做了)。这包括表单字段中的半文字输入。这意味着你有很多东西要听。
然后,Android会在你的Activity中调用一个特殊的钩子,当它回收你的应用程序并且你需要时,它将处理恢复状态给Activity。对于所有的回收来说都不会发生这种情况 - 您的应用程序存在各种各样的存在/存在状态。
因为你需要做这种繁琐的工作,所以Android会变得懒惰,并且像屏幕旋转一样将其作为应用程序的完整循环来实现。
我让它听起来比真的更糟,一旦你习惯了它;在Java和移动计算的范围内解决问题真的不是一个好方法。
当然,这是关于Android的回应。其他(桌面)操作系统依靠虚拟内存和寻呼来处理内存限制。
由于很好的理由,屏幕旋转被实现为完整的回收:这使得应用程序可以轻松地为不同的配置(字符串,布局,图像等)重新加载所有资源手动替换内存中的大量变量。 此外,所有默认的Android小部件都内置了对持久性的支持。任何带有id的小工具都会自动保存它的状态(这包括文本输入字段btw ...)。 – 2010-04-07 04:57:59
保存其状态的文本输入字段是新的。 正如我所说,这不是一个穷人的解决方案。它看起来效率非常低。他们的布局引擎真的不够复杂,无法确定要使用两套维度和资源中的哪一套? (答案是肯定的,但并不一定如此。) – 2010-04-07 07:46:48
- 1. Cruft代码。国际奥委会救援
- 2. 一个国家的可点击的救济(图片)
- 3. 如何制作国际Soundex?
- 4. 你如何解救I18n :: MissingTranslationData?
- 5. 如何禁用Auto_Open先救
- 6. 如何“拯救与编码”
- 7. 如何补救angularJS 2?
- 8. 如何为多国国家设置运输方式?
- 9. 如何声明,我该如何补救?
- 10. 如何在Android国际象棋游戏中制作动画
- 11. 在Ruby中IO.popen运行外部程序:救援工作不
- 12. 如何拯救我的文字中的TextView的android
- 13. 如何国际化Android应用程序?
- 14. 动态营救条款,该代码如何工作?
- 15. 急救中遇到的故障Android
- 16. 国际化在JavaScript中如何工作?
- 17. 如何在Ruby中拯救eval?
- 18. 如何从不良网址救援
- 19. 如何在模型中拯救异常?
- 20. 如何更改窗口xmonad补救?
- 21. 如何拯救异常中央和干?
- 22. 如何拯救“分”的错误?
- 23. 如何从RAM中拯救数据?
- 24. 的R - 如何“拯救”装包
- 25. 可以救救ActionDispatch :: Session :: SessionRestoreError吗?
- 26. Android Locale国名到国家代码
- 27. redirect_to没有工作到救援块
- 28. 在Rails中使用救援工作
- 29. DelayedJob工作人员救援“RecordNotFound”错误
- 30. 拯救大熊猫to_html”作为文件
不要假设其他操作系统:) – Stephen 2010-04-07 02:55:24