当android由于系统限制而终止您的进程时,它使您能够通过将数据存储在一个包中来跨进程持久化数据。如果您的进程被终止,这个包在哪里保存?它生活在哪一个过程中?它生活在记忆中的哪里?它存在于内核内存中吗?
发布于 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的某个位置。
https://stackoverflow.com/questions/29550915
复制相似问题