Android - 为什么我们应该在片段而不是片段参数中使用 saveInstanceState 包?

Android - Why the hell we should use saveInstanceState bundle in fragment and not fragment arguments?

我刚刚测试了片段参数包的行为。它像 saveInstanceState bundle 一样持久!如果我将某些内容保存到片段参数中,它会在 activity 甚至应用程序终止时存活下来! 那么为什么 saveInstanceState bundle 在那里呢? o_O

P.S。 在 activity 意图的额外情况下,我在 activity 代码中添加了例如字符串,即使 activity 重新创建也无法生存。只有那些在创造意图本身时投入的人才能生存。所以可以理解为什么我们需要 saveInstanceState 了。

片段参数用于外部初始化片段。保存的实例状态意味着由片段本身在内部使用。还有生命周期影响。所以框架会在适当的时候调用onSaveInstanceState(),但是如果你在调用setArguments(),你真的不知道什么时候应该调用它。除非你在 onSaveInstanceState() 期间调用它,在这种情况下只使用保存的状态。如果您使用参数来存储状态数据,则有可能破坏原始初始化数据。最后,setArguments() 无法在片段状态保存后调用,因此这种方法在何时起作用受到限制。