【发布时间】:2014-10-06 10:19:32
【问题描述】:
在我正在开发的应用程序中,我有一个自定义视图,当屏幕配置更改或应用程序移至后台时,我需要在其中保存实例状态。我实现了onSaveInstanceState() 和onRestoreInstanceState(Parcelable savedInstanceState),并且在屏幕配置更改的情况下,实例状态被完美地保存和恢复。但是,当应用程序移到后台时,onSaveInstanceState() 不会被调用。这意味着当活动再次被带到前台时,我没有保存的实例状态。那么我的问题是:
为什么应用移到后台时不调用onSaveInstanceState(),应用移到后台时是否可以让我的视图调用onSaveInstanceState()?
【问题讨论】:
-
这是一种奇怪的行为,你的自定义视图有 id 吗?我对此进行了测试,我的观点确实得到了 onSaveInstanceState 调用。 “移至背景”是指使用主页按钮吗?
-
我的视图确实有一个 id。实际上,使用主页按钮时不会出现问题。当您按下后退按钮离开活动时会发生这种情况。
-
当您按下返回按钮离开活动时会发生。 - 使用返回意味着您将永远离开应用程序(因此应用程序的状态不会存储),而不是您将应用程序发送到后台。您需要一个更持久的存储选项(如首选项、数据库等)来保存使用回来的数据。
标签: android view instance state parcelable