Android 处理方向更改的状态
如何处理定向事件发生时的所有状态 比如:Android 处理方向更改的状态,android,android-lifecycle,orientation-changes,android-activity,android-orientation,Android,Android Lifecycle,Orientation Changes,Android Activity,Android Orientation,如何处理定向事件发生时的所有状态 比如: 启动前(保存一些屏幕状态) 发生时(动画目的) 发生后(加载屏幕状态) 我知道,onConfigurationChanged可以处理方向更改。我试过这个: public void onConfigurationChanged(Configuration cfg) { saveState(); super.onConfigurationChanged(cfg); loadState();
- 启动前(保存一些屏幕状态)
- 发生时(动画目的)
- 发生后(加载屏幕状态)
public void onConfigurationChanged(Configuration cfg) {
saveState();
super.onConfigurationChanged(cfg);
loadState();
}
在保存状态下,我将在库中查看的最新索引存储在SharedReferences上。
在loadState上,我从SharedReferences中获取最后一个索引,并将其作为库中的当前索引
我还尝试在onResume方法中放入loadState,但在方向发生更改后,它不会被调用。您可能有点困惑 这是来自: public void onconfiguration changed(Configuration newConfig)在您的活动运行时,当设备配置发生更改时,系统将调用该函数。请注意,仅当您选择了要使用清单中的configChanges属性处理的配置时,才会调用此函数 如果您在AndroidManifest中指定了参数,系统将通过调用onConfigurationChanged()通知您方向的更改。如果您没有设置该标志,那么Android将终止您的活动,以正确的方向启动一个新的活动,然后调用 如果您希望在“活动完成”方向更改并全部布局时收到通知,我建议您在一个子视图中重写onDraw()方法。到那时,一切都完成了,例如,您可以从方向更改之前恢复状态 嗯 启动前(保存一些屏幕状态) 使用
onSaveInstanceState()
和/或onRetainonConfigurationInstance()
和/或调用了setRetainInstance(true)
发生时(动画目的)
这是由操作系统处理的
发生后(加载屏幕状态)
使用onrestoreinnstancestate()
和/或getLastNonConfigurationInstance()
(如果使用片段路径,数据自然仍然存在)
我知道OnConfiguration Changed可以处理方向更改
很好地涵盖了这一点