Android 从堆栈中删除活动,在顶部创建新实例
我的活动流程是这样的 A->B->C->B 当我从C启动B时,应将后堆栈重新排序为: A->C->B 我正在使用FLAG_ACTIVITY_REORDER_TO_FRONT,但这会重新使用堆栈中的实例,我不需要以前的状态(我需要再次调用onCreate) 更新:我为什么需要它(用例) 用户从A->B(在此处更改内容)->C进行导航 在C上打开抽屉导航并启动B。Android 从堆栈中删除活动,在顶部创建新实例,android,android-activity,Android,Android Activity,我的活动流程是这样的 A->B->C->B 当我从C启动B时,应将后堆栈重新排序为: A->C->B 我正在使用FLAG_ACTIVITY_REORDER_TO_FRONT,但这会重新使用堆栈中的实例,我不需要以前的状态(我需要再次调用onCreate) 更新:我为什么需要它(用例) 用户从A->B(在此处更改内容)->C进行导航 在C上打开抽屉导航并启动B。 B应在初始状态下启动。使用标记活动\u重新排序\u到前面,并在意图中添加额外内容,如下所示: Intent intent = new I
B应在初始状态下启动。使用
标记活动\u重新排序\u到前面
,并在意图
中添加额外内容,如下所示:
Intent intent = new Intent(this, ActivityB.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.putExtra("reinitialize", true);
startActivity(intent);
然后,在ActivityB
中,当活动被带到前面时,执行以下操作以重新创建活动:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (intent.hasExtra("reinitialize")) {
// We need to recreate this activity
Intent launchIntent = new Intent(this, this.getClass());
startActivity(launchIntent);
finish();
}
}
奇怪的场景,但如果您提供实际的用例,有些场景可能会对您有所帮助……为什么不坚持将标记_ACTIVITY_REORDER_TO_FRONT并重新初始化您关心的onResume()视图/片段/数据呢?如果只是一些无效的数据,那么创建一个全新的活动似乎是浪费CPU。@Matt那会很无聊,应用程序有30个活动,所有活动都遵循这个流程。我不知道你的应用程序看起来如何,但是你不能创建一个抽象的BaseActivity或者其他一些东西来处理这个问题吗?@Matt每次活动暂停/恢复时重新初始化视图/etc不是很乏味吗?