将uiMode附加到android:configChanges实际上做了什么?

时间:2016-10-10 15:04:11

标签: android

我刚刚在我们的应用程序中修复了一个错误。问题是对接或取消对接设备会导致应用程序重新启动。我在搜索大量论坛帖子后发现的修复是将 uiMode 附加到AndroidManifest.xml文件中的android:configChanges属性中:

    <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|uiMode" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.Black.NoTitleBar" android:windowSoftInputMode="adjustPan">
        <intent-filter android:label="@string/launcher_name">
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

我想确保通过实施此更改,我不打算破坏其他一些重要功能。据我了解,这可以防止我们的应用程序在对接或取消对接时重新启动。但这就是全部吗?我找不到任何易于理解的文档。

1 个答案:

答案 0 :(得分:3)

android:configChanges添加内容告诉Android您将在Activity类的onConfigurationChanged中自己处理特定事件(或忽略它们)。如果您指定某些内容,Android会在触发事件的情况下自行执行任何操作,这将是对接/取消停靠时的活动重新创建。

在正常情况下,只要您不改变布局,就不会破坏任何内容,例如在发生此类事件时。