当android由于系统限制而杀死你的进程时,它使你能够通过将数据存储在一个包中来跨进程持久化数据。如果你的进程被杀死,这个包保存在哪里?它生活在哪个过程中?它存在于内存中的何处?它存在于内核内存中吗?
答案 0 :(得分:2)
内核内存是受保护的内存空间,只有内核代码等关键代码才会存在。这是为了防止来自用户和内核的数据的干扰,以及其他性能和设计原因。内核内存将在重新启动后持续存在。
在Bundle中持久保存的数据在onSaveInstanceState()的方法中传递 - 在用户离开Activity之前,而不是在Activity被销毁之前。这可能意味着内存不会写入存储卡等静态存储区。 Bundle确实会以更动态的方式持续存在。
虽然这个问题没有得到直接回答,但看起来这是RAM上的内存。当你看到Android设备的性能时,更新的具有更多RAM的设备似乎能够持续更长时间的应用程序
从http://developer.android.com/training/basics/activity-lifecycle/recreating.html的官方文档中可以看出,这个内存是由Android本身跟踪的。
默认情况下,系统使用Bundle实例状态进行保存 有关活动布局中每个View对象的信息(例如 输入EditText对象的文本值)。所以,如果你的活动 实例被销毁并重新创建,布局的状态是 恢复到以前的状态,没有您需要的代码。然而, 您的活动可能包含您想要的更多状态信息 恢复,例如跟踪用户进度的成员变量 活动。
要保存有关活动状态的其他数据,您必须覆盖 onSaveInstanceState()回调方法。系统调用它 当用户离开您的活动并将其传递给Bundle时的方法 在您的活动被销毁的情况下将保存的对象 不料。如果系统必须稍后重新创建活动实例, 它将同一个Bundle对象传递给onRestoreInstanceState() 和onCreate()方法。
另请注意,当设备关闭时,此Bundle会被破坏。 Android可能有一个特别设计的内存区域,但无论哪种方式它都在RAM中。