使用 onCreate 与 onRestoreInstanceState
Using onCreate vs. onRestoreInstanceState
从技术上讲我应该使用 onRestoreInstanceState
有什么理由吗?我不能通过检查 savedInstanceState
包是否为空来完成 onCreate
中的所有恢复吗?使用 onRestoreInstanceState
比在 onCreate
中做所有事情的主要好处是什么?
onRestoreInstanceState
This method is called after onStart() when the activity is being re-initialized from a previously saved state, given here in savedInstanceState. Most implementations will simply use onCreate(Bundle) to restore their state, but it is sometimes convenient to do it here after all of the initialization has been done or to allow subclasses to decide whether to use your default implementation.
onRestoreInstanceState
保证您在 activity 的生命周期中也收到一个非空 Bundle
对象,它在 onStart
之后调用
但是 onCreate
:您应该始终检查 Bundle
对象是否为 null 以确定配置更改,正如您所知,它在 onStart
之前被调用
所以这一切都取决于你,取决于你的需要。
大多数情况下我倾向于使用 onCreate(Bundle) 来恢复 activity 状态,但是如果你有一些初始化之后你想恢复状态最好使用 onRestoreInstanceState() 它提供了很大的恢复灵活性subsclasses 表示那些正在扩展当前 activity。还要注意 onRestoreInstanceState() 在 onStart() 之后调用,而 onCreate(bundle) 在这之前调用。
如果您有大量数据,您可以实施处理 UI 控制器逻辑的 ViewModel class。 ViewModel 对象在配置更改期间自动保留,以便它们保存的数据可立即用于下一个 activity 或片段实例。例如,如果您需要在应用中显示用户列表,请确保将获取和保存用户列表的责任分配给 ViewModel,而不是 activity 或片段。
它还提供解耦并使您的 activity 或片段服务于单一目的,而不是处理 UI 逻辑的过多责任。
在我看来,我们可以看到这个文档 Restore activity UI state using saved instance state .
这里有几点
1.Both the onCreate() and onRestoreInstanceState() callback methods receive the same Bundle that contains the instance state information.
2.Instead of restoring the state during onCreate() you may choose to implement onRestoreInstanceState(), which the system calls after the onStart() method. The system calls onRestoreInstanceState() only if there is a saved state to restore, so you do not need to check whether the Bundle is null:
从技术上讲我应该使用 onRestoreInstanceState
有什么理由吗?我不能通过检查 savedInstanceState
包是否为空来完成 onCreate
中的所有恢复吗?使用 onRestoreInstanceState
比在 onCreate
中做所有事情的主要好处是什么?
onRestoreInstanceState
This method is called after onStart() when the activity is being re-initialized from a previously saved state, given here in savedInstanceState. Most implementations will simply use onCreate(Bundle) to restore their state, but it is sometimes convenient to do it here after all of the initialization has been done or to allow subclasses to decide whether to use your default implementation.
onRestoreInstanceState
保证您在 activity 的生命周期中也收到一个非空 Bundle
对象,它在 onStart
之后调用
但是 onCreate
:您应该始终检查 Bundle
对象是否为 null 以确定配置更改,正如您所知,它在 onStart
之前被调用
所以这一切都取决于你,取决于你的需要。
大多数情况下我倾向于使用 onCreate(Bundle) 来恢复 activity 状态,但是如果你有一些初始化之后你想恢复状态最好使用 onRestoreInstanceState() 它提供了很大的恢复灵活性subsclasses 表示那些正在扩展当前 activity。还要注意 onRestoreInstanceState() 在 onStart() 之后调用,而 onCreate(bundle) 在这之前调用。
如果您有大量数据,您可以实施处理 UI 控制器逻辑的 ViewModel class。 ViewModel 对象在配置更改期间自动保留,以便它们保存的数据可立即用于下一个 activity 或片段实例。例如,如果您需要在应用中显示用户列表,请确保将获取和保存用户列表的责任分配给 ViewModel,而不是 activity 或片段。 它还提供解耦并使您的 activity 或片段服务于单一目的,而不是处理 UI 逻辑的过多责任。
在我看来,我们可以看到这个文档 Restore activity UI state using saved instance state .
这里有几点
1.Both the onCreate() and onRestoreInstanceState() callback methods receive the same Bundle that contains the instance state information.
2.Instead of restoring the state during onCreate() you may choose to implement onRestoreInstanceState(), which the system calls after the onStart() method. The system calls onRestoreInstanceState() only if there is a saved state to restore, so you do not need to check whether the Bundle is null: