如果Activity被操作系统杀死,我们如何检索保存的状态?

时间:2018-08-12 15:00:59

标签: android android-activity activity-lifecycle

据我所知,一旦该应用程序没有被破坏并且在后台,如果操作系统需要更多内存,则操作系统将终止该应用程序,但会保存状态(onSaveInstanceState)。当我们重新打开该应用程序时,似乎我们正面临着之前的活动,但实际上它已被破坏并再次创建。如果我的解释正确,那么应用程序如何检索已保存的状态?它是否将其存储在内存中?我们能够检索保存状态多长时间?

2 个答案:

答案 0 :(得分:2)

  

如果我的解释正确,那么应用程序如何检索保存的   状态?

Android documentation

  

如果系统由于系统限制(例如,   配置更改或内存压力),尽管实际   活动实例不见了,系统会记住它已经存在。如果   用户尝试导航回活动,系统将创建   使用一组保存的数据的活动的新实例,   描述活动被销毁时的状态。

关于您的第二个问题-它是操作系统如何实现的实现细节,实际上我们不必担心:)。重要的是它应该可靠地执行此操作。

只要用户不按Back或不调用finish()中的Activity,系统就会保持保存状态。

答案 1 :(得分:1)

操作系统将其存储。它调用onSaveInstanceState来生成存储的Bundle,并调用onRestoreInstanceState来使自己从状态中恢复。操作系统的存储方式无关紧要-也许将其保存在RAM中,也许将其序列化到磁盘上。可以确定的是,如果您返回到该活动,将为您传递一个Bundle对象,其中包含您先前填写的信息。您无需检索该状态-如果该状态存在,则将其传递给您。