使用AppCompatDelegate.setDefaultNightMode时出现生命周期回调顺序问题

问题描述 投票:0回答:1

我的Activity堆栈顺序是:MainActivity、SettingActivity、ThemeSettingActivity。 ThemeSettingActivity 是顶级活动。

当我使用AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)并通过系统设置切换主题时,只有堆栈中的顶部Activity收到生命周期回调,而MainActivity和SettingActivity不会收到任何回调。

但是,当我在代码中使用 AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) 或 AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) 切换主题时,如果我的应用程序位于前台,则所有活动(包括顶级活动、MainActivity 和 SettingActivity)都会收到生命周期回调,这些回调在顶级 Activity 的生命周期回调之后执行。我的三个Activity的生命周期回调顺序如下:

请帮帮我~!

我希望生命周期回调顺序正确,最后调用 ThemeSettingActivity 的 onResumed 方法。

android androidx
1个回答
0
投票

我的三个Activity的生命周期回调顺序如下:

主题设置活动::onActivityPaused

主题设置活动::onActivityStopped

ThemeSettingActivity::onActivitySaveInstanceState

主题设置活动::onActivityDestroyed

主题设置活动::onActivityCreated

主题设置活动::onActivityStarted

主题设置活动::onActivityResumed

设置活动::onActivityDestroyed

设置活动::onActivityCreated

设置活动::onActivityStarted

设置活动::onActivityResumed

设置活动::onActivityPaused

设置活动::onActivityStopped

设置活动::onActivitySaveInstanceState

MainActivity::onActivityDestroyed

MainActivity::onActivityCreated

MainActivity::onActivityStarted

MainActivity::onActivityResumed

MainActivity::onActivityPaused

MainActivity::onActivityStopped

MainActivity::onActivitySaveInstanceState

© www.soinside.com 2019 - 2024. All rights reserved.