首页 > 解决方案 > 当且仅当夜间模式打开时,屏幕旋转更改时重新创建活动

问题描述

我有这个Activity(子类AppCompatActivity):

<activity
    android:name=".ui.settings.SettingsActivity"
    android:configChanges="keyboardHidden|smallestScreenSize|orientation|screenSize|screenLayout"
    android:launchMode="singleTask"
    android:parentActivityName=".ui.main.MainActivity" />

现在,当我在正常(即“日”)模式下旋转手机时,我接到了电话,onConfigurationChangedActivity没有重新创建。

但是,当应用程序设置为夜间模式(通过在创建之前调用AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)我的)然后我旋转手机时,我首先接到电话但随后也重新创建!当我添加到应该在 my 中忽略的时,这就会消失,但我需要这样做似乎很奇怪。ApplicationActivityonConfigurationChangedActivityuiModeuiModeconfigChangesAndroidManifest.xml

通过查看源代码似乎:

那么,这里发生了什么,我可以做些什么来获得更一致的行为?Activity(无论应用程序是否处于夜间模式,在屏幕旋转后重新创建(或不) 。)

标签: androidandroid-appcompatandroid-resourcesandroid-night-mode

解决方案


似乎是一个错误,将根据此问题在 AppCompat v1.1.0 中修复。

从 AppCompat v1.1.0-alpha03 开始​​,您不再需要uiMode-flagconfigChanges作为解决方法


推荐阅读