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();

如何处理定向事件发生时的所有状态

比如:

  • 启动前(保存一些屏幕状态)
  • 发生时(动画目的)
  • 发生后(加载屏幕状态)
我知道,onConfigurationChanged可以处理方向更改。我试过这个:

    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可以处理方向更改

很好地涵盖了这一点