Поведение в темном режиме Android
Я пытаюсь реализовать темный режим в своем приложении и столкнулся со странным поведением флагов 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 ответ
Однако такое поведение правильное. Каждый раз, когда вы делаете:
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
Или
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
Для применения этого действия необходимо воссоздать вашу деятельность.
С другой стороны, если вы используете: AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
Ваша активность будет инициализирована с настройками режима системной темы (если BuildCompat.isAtLeastQ())