当我重新创建活动时,观察到从Android Emulator API级别28开始的不良行为。按下后,我进入主屏幕,而不是以前的活动(如API级别27及以下的活动)。
所以情况如下:
在AndroidManifest.xml
中,MainActivity
被设置为singleTask
。 MainActivity
和SettingsActivity
都扩展了BaseActivity
。
在SettingsActivity
中,我让用户更改为暗模式或其他语言,然后使用以下方式重新创建活动:
getActivity().recreate();
BaseActivity
然后根据(新)首选项重新创建自身(从here开始)。
startActivity(getIntent());
finish();
overridePendingTransition(0, 0);
娱乐正常。在 API级别27 及以下级别,我假设我得到的任务看起来像左处的任务,从 API 28 向上的项目,我假定我得到了一项看起来像右侧上的那个:
但是我也希望有一个看起来像API 28及更高版本的第一个任务。
我发现,在BaseActivity
中,我可以添加Intent.FLAG_ACTIVITY_CLEAR_TASK
Intent标志来重新创建活动,这会使达到我想要的行为,但是我不明白为什么这实际上会有所帮助,以及如果这是最好的方法,在这里。这里有任何Intent / Task专家吗?
我在这里想念什么?