0

我正在尝试在我的应用程序中实现暗模式,但遇到了MODE_NIGHT_YES|MODE_NIGHT_NO标志的奇怪行为。

我使用AppCompatDelegate.setDefaultNightMode(...)设置全局暗模式。因此,当我使用MODE_NIGHT_FOLLOW_SYSTEM时,一切都很完美并且按预期工作,但是当我使用MODE_NIGHT_YESMODE_NIGHT_NO时,我的应用程序仍然会对系统暗模式切换设置做出反应,并在它发生时重新创建我的活动。我希望如果我设置MODE_NIGHT_YESNO系统设置无论如何都不应该影响我的应用程序,但确实如此。

这是预期的还是错误的?此外,我不会自己处理 uiMode 配置更改,一切都是通过使用AppCompatDelegate.setDefaultNightMode(...)完成的。但看起来我应该这样做以防止不必要的活动娱乐。

4

1 回答 1

0

不过这种行为是正确的。每次您执行以下任一操作时:

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)

或者

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)

必须重新创建您的活动才能应用它。

另一方面,如果您使用: AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM) 您的活动将使用系统主题模式首选项进行初始化(如果 BuildCompat.isAtLeastQ())

于 2019-10-17T23:41:23.457 回答