将 uiMode 附加到 android:configChanges 实际上有什么作用?

Xou*_*boy 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>
Run Code Online (Sandbox Code Playgroud)

我想确保通过提交此更改,我不会破坏其他一些重要功能。据我了解,这会阻止我们的应用程序在对接或取消对接时重新启动。但仅此而已吗?我找不到任何易于理解的文档。

小智 7

添加一些东西android:configChanges告诉 Android 你将onConfigurationChanged在 Activity 类中自己处理特定事件(或忽略它们)。如果您指定某些内容,则在触发事件(即对接/取消对接时的 Activity 娱乐)的情况下,Android 不会自行执行任何操作。

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