我有一项设置活动,可以选择允许用户使用以下方式在夜间和白天模式之间切换:
git commit
这几乎适用于我的所有活动,因为android会在发生这种情况时强制进行配置更改,从而导致所有活动都通过配置更改重新启动。
但是我有一个活动是singleTop:
AppCompatDelegate.setDefaultNightMode();
此活动未看到配置更改且未重新启动。如果我删除singleTop,则活动会看到配置更改并重新启动。这是android中的错误吗?我已更新到最新的支持库(27.1.0),但仍然没有运气。
答案 0 :(得分:1)
通常,具有singleTop
启动模式的活动可以多次实例化,但情况并非总是如此。通常,实例将启动到调用startActivity()
的任务中。但是,如果目标任务已在其堆栈顶部具有活动的现有实例,则实例将接收该intent,但不会创建该活动的新实例。因此,活动不会重新启动,也不会看到配置更改。由于AppCompatDelegate.setDefaultNightMode()
仅对调用后创建的组件生效,因此不会更新已创建的实例。
对于具有默认模式的启动模式standard
的活动,每次有这些活动的新意图时,都会创建一个新实例。这就是为什么当您删除singleTop
模式时,您可以看到要重新启动和配置更改的活动。