首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓onSaveInstanceState捆绑

安卓onSaveInstanceState捆绑
EN

Stack Overflow用户
提问于 2015-04-09 23:41:40
回答 1查看 318关注 0票数 2

当android由于系统限制而终止您的进程时,它使您能够通过将数据存储在一个包中来跨进程持久化数据。如果您的进程被终止,这个包在哪里保存?它生活在哪一个过程中?它生活在记忆中的哪里?它存在于内核内存中吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-10 00:26:48

内核内存是一个受保护的内存空间,只有内核代码这样的关键代码驻留在其中。这是为了防止来自用户和内核的数据的干扰,也是出于其他性能和设计原因。内核内存将通过重新引导而持久存在。

保存在Bundle中的数据是在onSaveInstanceState()方法中传递的-在用户离开该活动之前,而不是在活动被销毁之前。这很可能意味着内存不会写入像存储卡这样的静态内存区域。捆绑的确将被坚持,但将以一种更有活力的方式进行。

虽然这个问题还没有被直接回答,但看起来这是内存中的内存。当您查看Android设备的性能时,最近拥有更多RAM的设备似乎能够更长时间地保留应用程序。

http://developer.android.com/training/basics/activity-lifecycle/recreating.html的官方文档中可以了解到,这个内存是由Android自己跟踪的。

默认情况下,系统使用Bundle实例状态来保存活动布局中每个View对象的信息(例如输入到EditText对象中的文本值)。因此,如果您的活动实例被销毁和重新创建,布局的状态将恢复到以前的状态,而不需要代码。但是,您的活动可能有更多要还原的状态信息,例如跟踪用户在活动中的进度的成员变量。 若要保存有关活动状态的其他数据,必须重写onSaveInstanceState()回调方法。当用户离开您的活动时,系统将调用此方法,并将在您的活动被意外破坏时保存的Bundle对象传递给它。如果系统稍后必须重新创建活动实例,则将同一个Bundle对象传递给onRestoreInstanceState()和onCreate()方法。

同时要记住,当设备关闭时,这个捆绑会被摧毁。Android可能有一个专门设计的内存区域,但不管是哪种方式,它都在RAM的某个位置。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29550915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档