【发布时间】:2020-10-30 15:00:18
【问题描述】:
我正在使用导航组件,但我遇到了一个不知道为什么会发生的问题。
我在Fragment 中使用onSaveInstanceState(),当我更改导航组件显示的片段时,当我旋转屏幕时执行前一个片段的onSaveInstanceState()。
为什么会这样?这个片段应该被销毁,它不应该执行该方法。
【问题讨论】:
标签: android android-fragments navigation
我正在使用导航组件,但我遇到了一个不知道为什么会发生的问题。
我在Fragment 中使用onSaveInstanceState(),当我更改导航组件显示的片段时,当我旋转屏幕时执行前一个片段的onSaveInstanceState()。
为什么会这样?这个片段应该被销毁,它不应该执行该方法。
【问题讨论】:
标签: android android-fragments navigation
Fragment 在后台堆栈中时不会被销毁 - 只有 Fragment 的 view 被销毁。这是片段生命周期和片段的视图生命周期(getViewLifecycleOwner())之间的关键区别。
虽然在销毁视图之前会自动保存 Fragment 的视图状态,但在调用 onSaveInstanceState() 时保存任何特定于 Fragment 的状态仍然是 Fragment 的责任。
【讨论】: