当manifest具有清单方向标记时,onConfigurationChanged()不会被调用

时间:2012-11-20 18:41:22

标签: android

我已经查看了此问题的其他许多帖子,最常见的解决方案是确保您的清单中包含以下内容:

<activity android:name=".activities.myActivity" 
        android:configChanges="orientation|keyboard|keyboardHidden|screenSize">

这个子已经在我的清单中,我强制我的活动'方向为横向或纵向但尚未调用onConfigurationChanged(...)。

我的onConfigureationChanged(...)函数如下,我没有收到logcat输出:

@Override
public void onConfigurationChanged(Configuration newConfig) {

    Logger.e(getClass().getSimpleName(), "onConfigurationChanged()");

    super.onConfigurationChanged(newConfig);
}

我还通过在onCreate()和onPause()中添加记录器来验证活动没有经历标准生命周期。

1 个答案:

答案 0 :(得分:0)

只有当AndroidManifest.xml中的指定配置发生变化时,才会调用OnConfigurationChanged。例如,将在屏幕更改后调用此方法。如果我理解,你的应用程序的配置不会改变。

来自Android documentation

例如,以下清单代码声明了一个处理屏幕方向更改和键盘可用性更改的活动:

<activity android:name=".MyActivity"
      android:configChanges="orientation|keyboardHidden"
      android:label="@string/app_name">

现在,当其中一个配置发生更改时,MyActivity不会重新启动。相反,MyActivity接收对onConfigurationChanged()的调用。此方法传递一个Configuration对象,该对象指定新设备配置。