【问题标题】:What does appending uiMode to android:configChanges actually do?将 uiMode 附加到 android:configChanges 实际上有什么作用?
【发布时间】:2021-09-21 02:38:08
【问题描述】:

我刚刚修复了我们应用程序中的一个错误。问题是对接或取消对接设备会导致应用程序重新启动。我在搜索大量论坛线程后发现的修复方法是将 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>

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

【问题讨论】:

  • 好的,找到了... 用户界面模式已更改 — 这可能是由于用户将设备放入桌面/车载底座或夜间模式更改时造成的。
  • 这个问题本身就是对接模式面临的问题的答案! commonsware.com/blog/2019/06/19/…

标签: android


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-08-25
    • 1970-01-01
    • 2022-11-27
    • 1970-01-01
    • 2016-11-09
    • 2017-08-08
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多