Android 启动多个嵌套活动并在ActivityResult上获得结果的规范方法

Android 启动多个嵌套活动并在ActivityResult上获得结果的规范方法,android,Android,我有以下要求: 活动A-->活动B-->Open Gallery应用程序 传统上,我使用启动嵌套活动。所以我会这样做: TaskStackBuilder tsb = TaskStackBuilder.create(this); Intent activityIntentA = new Intent(this, ActivityA.class) // ... tsb.addNextIntent(acti

我有以下要求:

活动A-->活动B-->Open Gallery应用程序

传统上,我使用启动嵌套活动。所以我会这样做:

                TaskStackBuilder tsb = TaskStackBuilder.create(this);
                Intent activityIntentA = new Intent(this, ActivityA.class) // ...
                tsb.addNextIntent(activityIntentA);

                Intent activityIntentB = new Intent(this, ActivityB.class) // ...
                tsb.addNextIntent(activityIntentB);

                Intent galleryIntent = new Intent(Intent.ACTION_PICK);
                galleryIntent.setType("image/*");
                tsb.addNextIntent(galleryIntent);

                // this.startActivities(new Intent[] {activityIntentA, activityIntentB, galleryIntent});
                tsb.startActivities();
(一个附带的问题是,使用任务堆栈生成器和startActivities()调用之间是否有区别)

不过,这种方法的问题是,当GalleryContent关闭时,它不会调用ActivityResult的
方法,而是调用ActivityB的
OnCreate
方法,这意味着我丢失了通过intent参数“data”提供的gallery应用程序中的信息在我的onActivityResult调用activityB时

另一种解决方案是手动启动调用,因此首先调用活动B,然后使用标志/参数/参数启动GalleryContent,然后使用OnActivityResult遵循常规流程


是否有更好的方法来解决此需求?

我感觉TaskStackBuilder不能很好地适应您的需求。我会以一种更容易的方式处理它

*我假设交互从活动A开始,然后你需要打开图库,但需要活动B来处理结果

我将打开活动B,并从那里启动图库的意图。一旦gallery将结果发送给B,您就可以在那里进行任何处理。 在额外的处理之后,如果需要,您始终可以将另一个结果从活动B传递到A


请注意,您需要已经创建活动B,并在库打开之前听取结果。

谢谢Jose,我想您提出的解决方案与我提出的备选方案类似?这正是我目前所做的。但感觉应该有一种更好的/规范的方法来做。你是对的。我打赌拍摄照片并在拍摄后对其进行裁剪的内部流程的工作原理与此类似。据我所知,只有在使用
startActivityForResult(intent)
启动它们时才会调用
onActivityResult