setDefaultNightMode更改未重新启动singleTop活动

时间:2018-03-17 22:50:31

标签: android android-activity android-theme

我有一项设置活动,可以选择允许用户使用以下方式在夜间和白天模式之间切换:

git commit

这几乎适用于我的所有活动,因为android会在发生这种情况时强制进行配置更改,从而导致所有活动都通过配置更改重新启动。

但是我有一个活动是singleTop:

AppCompatDelegate.setDefaultNightMode();

此活动未看到配置更改且未重新启动。如果我删除singleTop,则活动会看到配置更改并重新启动。这是android中的错误吗?我已更新到最新的支持库(27.1.0),但仍然没有运气。

1 个答案:

答案 0 :(得分:1)

通常,具有singleTop启动模式的活动可以多次实例化,但情况并非总是如此。通常,实例将启动到调用startActivity()的任务中。但是,如果目标任务已在其堆栈顶部具有活动的现有实例,则实例将接收该intent,但不会创建该活动的新实例。因此,活动不会重新启动,也不会看到配置更改。由于AppCompatDelegate.setDefaultNightMode()仅对调用后创建的组件生效,因此不会更新已创建的实例。

对于具有默认模式的启动模式standard的活动,每次有这些活动的新意图时,都会创建一个新实例。这就是为什么当您删除singleTop模式时,您可以看到要重新启动和配置更改的活动。

相关问题