据我所知,一旦该应用程序没有被破坏并且在后台,如果操作系统需要更多内存,则操作系统将终止该应用程序,但会保存状态(onSaveInstanceState
)。当我们重新打开该应用程序时,似乎我们正面临着之前的活动,但实际上它已被破坏并再次创建。如果我的解释正确,那么应用程序如何检索已保存的状态?它是否将其存储在内存中?我们能够检索保存状态多长时间?
答案 0 :(得分:2)
如果我的解释正确,那么应用程序如何检索保存的 状态?
如果系统由于系统限制(例如, 配置更改或内存压力),尽管实际 活动实例不见了,系统会记住它已经存在。如果 用户尝试导航回活动,系统将创建 使用一组保存的数据的活动的新实例, 描述活动被销毁时的状态。
关于您的第二个问题-它是操作系统如何实现的实现细节,实际上我们不必担心:)。重要的是它应该可靠地执行此操作。
只要用户不按Back
或不调用finish()
中的Activity
,系统就会保持保存状态。
答案 1 :(得分:1)
操作系统将其存储。它调用onSaveInstanceState来生成存储的Bundle,并调用onRestoreInstanceState来使自己从状态中恢复。操作系统的存储方式无关紧要-也许将其保存在RAM中,也许将其序列化到磁盘上。可以确定的是,如果您返回到该活动,将为您传递一个Bundle对象,其中包含您先前填写的信息。您无需检索该状态-如果该状态存在,则将其传递给您。