删除特定堆栈 activity

Delete specific stack activity

在我的应用程序中,我有一个 5 activity 的序列,从第二个开始,有重新启动按钮,这应该回到第一个,问题是堆栈仍然存在,这会创建一个问题,因为用户可以点击返回。清除整个堆栈不是一个选项,因为在这 5 个之前有一个 activity,如果我清除它,它也会被删除。

不能使用片段

您需要为 activity 使用 singleTask launchMode,您在点击重启时启动。

singleTask

如果系统中不存在该 singleTask Activity 实例,将创建一个新实例并将其简单地放置在同一任务的堆栈顶部。

但是如果存在一个,所有放置在该 singleTask Activity 之上的 Activity 将以适当的方式(触发生命周期)自动和残酷地销毁Activity 你想出现在堆栈的顶部。 与此同时,一个 Intent 将通过可爱的 onNewIntent() 发送到 singleTask Activity方法。


所以你需要在清单中写 activity 条目为

<activity
    android:name=".YouSecondActivity"
    android:label="singleTask launchMode"
    android:launchMode="singleTask">

另请参阅 android:taskAffinity 文档。虽然这里没有要求,但你应该了解一下。

参考文献 Understand Android Activity's launchMode: standard, singleTop, singleTask and singleInstance and Android Activity “launchMode” Explained , Must know for Android Development.