为什么在Fragment(与Activity)中实现SaveInstanceState的方式有所不同?

时间:2018-07-12 20:50:29

标签: android android-fragments android-savedstate

例如,在Activity中,该方法受到保护:

@Override
protected void onSaveInstanceState(Bundle outState) {

Fragment中是公开的:

@Override
public void onSaveInstanceState(Bundle currentState) {

到目前为止,我已经在多个应用中看到了它。这是为什么?谢谢。 请注意,这是一个普遍的问题,与任何特定的代码/应用都不相关。

1 个答案:

答案 0 :(得分:0)

Activity是由系统管理的Android生命周期组件。 Activity#saveInstanceState()调用Activity#performSaveInstanceState(),而系统ActivityThread最终调用protected。由于它处于同一类层次结构中,因此Fragment就足够了。

{p1}在其他相关类的帮助下,以不同的方式管理

FragmentActivity的生命周期。通过FragmentManager#saveAllState()执行状态保存。由于它位于另一个类层次结构中,因此Fragment#onSaveInstanceState()必须为public才能被调用。

要了解类似的信息,通常有助于阅读平台资源。例如,我经常借助androidxref.com快速浏览平台源代码。