Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从堆栈中删除活动,在顶部创建新实例_Android_Android Activity - Fatal编程技术网

Android 从堆栈中删除活动,在顶部创建新实例

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

我的活动流程是这样的

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 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不是很乏味吗?