Поведение в темном режиме 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())

Другие вопросы по тегам