哪种机制导致在片段到片段导航中调用View.onSaveInstanceState?

问题描述 投票:0回答:1

SO和Google围绕着这个话题有很多喧嚣,请耐心等待。

执行片段到片段导航时,会看到此生命周期:

Fragment1: onPause
Fragment1: onStop
Fragment1: onDestroyView

Fragment2: onCreateView
Fragment2: onStart
Fragment2: onResume

(您可以在这张照片中看到这是从here被盗的)enter image description here

由于Fragment实例仍然存在,因此没有对Fragment.onSaveInstanceState的调用-仅其视图已被破坏。

因此,哪种机制可以保存View的状态并进行还原,以及如何?

android android-fragments android-view android-lifecycle
1个回答
-1
投票

onSaveInstanceState将根据文档被调用:

对于应用程序,此方法将在onStop()之后发生以Build.VERSION_CODES.P开头的定位平台。对于针对较早平台版本的应用程序,此方法将发生在onStop()之前,并且不能保证它是否将在onPause()之前或之后发生。

在onSaveInstanceState中,您可以将要保留的所有数据放入捆绑包中

override fun onSaveInstanceState(outState: Bundle) {
// put data you want to persist to outState
super.onSaveInstanceState(outState)

}

然后在onCreate中,您可以检查是否需要恢复持久数据:

  override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (savedInstanceState == null) {
  // activity created for the first time
} else {
  // activity re-created, restore data from savedInstanceState
}

}

您还可以在这里阅读更多相关信息:https://developer.android.com/topic/libraries/architecture/saving-states

© www.soinside.com 2019 - 2024. All rights reserved.