删除特定的堆栈活动



在我的应用程序中,我有一个 5 个活动的序列,从第二个开始,有重新启动按钮,这应该回到第一个,问题是堆栈仍然持有,这会产生问题,因为用户可以单击返回。清除整个堆栈不是一种选择,因为这 5 个之前有一个活动,如果我清理它,它也会被擦除。

使用片段不是一种选择

您需要对重新启动时启动的活动使用singleTask启动模式。

单个任务

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

但是,如果存在一个活动,则放置在该singleTask活动之上的所有活动都将以正确的方式自动残酷地销毁(生命周期触发(,以使该活动成为您希望出现在堆栈顶部的活动。同时,Intent将通过可爱的onNewIntent()方法发送到singleTask Activity


所以你需要在清单中将活动条目写为

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

另请参阅android:taskAffinity文档。虽然你在这里不需要,但你应该知道它。

参考资料有了解 Android 活动的启动模式:标准、单顶、单任务和单实例以及 Android 活动"启动模式"说明,对于 Android 开发必须知道。

最新更新