我很抱歉,如果这听起来很愚蠢,但我已经坚持了很长时间。
我有5项活动A,B,C,D,E。并且链如此A-> B(在移动到C之后完成) - > C-> D-> E。因为C,D是相互依赖的,所以我不想丢失任何C,D的实例,直到我将它们完成在一起。我希望在E中执行此操作,这意味着我想从E完成C,D,E并移至A 或完成所有活动,然后打开A <的新实例/ strong>即可。 请提供一个解决方案,如果有人已经有这个问题的简单解决方案。我尝试了很多东西,我得到的最接近的是当我将C的launchMode设置为“singleTask”并将startMode设置为“ singleInstance“并且当按下后退按钮时使用意图移动到C,这样我可以在不完成任何活动的情况下来回移动,如果创建新实例,则无关紧要,因此将其保持为”标准“。然后我使用意图打开A并且还添加了标志“FLAG_ACTIVITY_CLEAR_TOP”并且还尝试使用startActivityFor结果来关闭D,因为它是“singleInstance”活动。
现在问题之一是我无法理解正在创建的结构但我觉得它是这样的
Task 1 -- [A->C] (Since B is finished when C is opened)
Task 2 -- [D] (since singleInstance)
Task 3 -- [E]
现在我必须从E到A的新实例并关闭其他所有内容。由于所有活动具有相同的亲和力,我尝试使用finishAffinity(),但它也没有锻炼。
另一个问题是当你在E中设置结果时,没有调用D中的onActivityResult方法(根据stackoverflow中的一个答案,我认为这是因为D是singleInstance),但是当我按下时它是从A调用的在A中的后退按钮或我们可以说当从A调用finish()时(我不知道为什么会发生这种情况)。所以,现在按下按钮时会出现不同类型的问题。
答案 0 :(得分:0)
您可以使用片段完成任务。 创建一个替换片段的函数,并使用布尔变量添加和清除后栈条目。