当应用程序移动到后台时,不会在自定义视图上调用onSaveInstanceState()

时间:2014-10-06 10:19:32

标签: android view instance state parcelable

在我正在开发的应用程序中,我有一个自定义视图,当屏幕配置更改或应用程序移动到后台时,我需要保存实例状态。我实现了onSaveInstanceState()onRestoreInstanceState(Parcelable savedInstanceState),在屏幕配置更改的情况下,实例状态得以完美保存和恢复。但是,当应用移动到后台时,不会调用onSaveInstanceState()。这意味着当活动再次进入前台时,我没有保存的实例状态。我的问题是:

当应用移动到后台时,为什么onSaveInstanceState()没有被调用,当应用移动到后台时,是否可以调用我的视图onSaveInstanceState()

2 个答案:

答案 0 :(得分:1)

  

当您按后退按钮离开活动时会发生这种情况。 -   零

当使用“后退”按钮离开应用程序时,Android系统不会调用onSaveInstanceState方法,这是预期的系统行为。后退按钮用于停止您的应用(阅读:活动)。

“后退”按钮完成您的“活动”,无需保存应用状态。但是如果有理由这样做,那么你应该覆盖onStop方法,例如将数据保存到那里的文件系统。

<强>来源:

http://developer.android.com/training/basics/activity-lifecycle/recreating.html (推荐阅读)

  

在某些情况下,您的活动会因此被销毁   正常的应用程序行为,例如当用户按下后退按钮或时   你的活动通过调用finish()来表示自己的破坏。

答案 1 :(得分:-3)

据我所知,当app进入后台时,在Activity上调用onPause()方法。所以请尝试将代码移动到onPause()方法。