删除特定堆栈 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.
在我的应用程序中,我有一个 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.