Поведение Android в темном режиме - PullRequest
0 голосов
/ 02 октября 2019

Я пытаюсь реализовать темный режим в своем приложении и столкнулся со странным поведением флагов MODE_NIGHT_YES | MODE_NIGHT_NO .

Я использую AppCompatDelegate.setDefaultNightMode (...) для установки глобального темного режима. Поэтому, когда я использую MODE_NIGHT_FOLLOW_SYSTEM , все идеально и работает, как и ожидалось, но когда я использую MODE_NIGHT_YES или MODE_NIGHT_NO , мое приложение по-прежнему реагирует на настройки System Dark Mode Toggle и заново создает моидеятельность, когда это происходит. Я ожидаю, что если я установлю MODE_NIGHT_YES или NO , системные настройки в любом случае не должны влиять на мое приложение, но это влияет.

Это что-то ожидаемое или это ошибка? Также я не обрабатываю изменения конфигурации uiMode самостоятельно, все делается с помощью AppCompatDelegate.setDefaultNightMode (...) . Но, похоже, я должен сделать это, чтобы предотвратить ненужный активный отдых.

1 Ответ

0 голосов
/ 18 октября 2019

Хотя это правильное поведение. Каждый раз, когда вы делаете либо:

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)

Или

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)

Ваша деятельность должна быть воссоздана, чтобы применить это.

С другой стороны, если вы используете: AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM) Ваша деятельность будет инициализирована с настройками режима системной темы (если BuildCompat.isAtLeastQ ())

...