代码之家  ›  专栏  ›  技术社区  ›  Woton Sampaio

删除特定堆栈活动

  •  2
  • Woton Sampaio  · 技术社区  · 6 年前

    在我的应用程序中,我有一个5个活动的序列,从第二个开始,有restart按钮,这应该回到第一个,问题是堆栈仍然存在,这会产生一个问题,因为用户可以单击back。清除整个堆栈不是一个选项,因为在这5之前有一个活动,如果我清除它,它也将被删除。

    使用片段不是一个选项

    1 回复  |  直到 6 年前
        1
  •  1
  •   Pankaj Kumar    6 年前

    你需要使用 singleTask 单击“重新启动”时启动的活动的启动模式。

    单一任务

    如果系统中没有单独的活动实例,则创建新的活动实例,并简单地放置在同一任务的堆栈顶部。

    但是如果存在一个,所有的活动都放在上面。 单一任务 活动将以正确的方式(触发生命周期)被自动残酷地销毁,以使您希望显示在堆栈顶部的活动。 同时,一个 Intent 会被送到 singleTask Activity 穿过可爱的 onNewIntent() 方法


    所以您需要在manifest中编写活动条目

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

    请看 android:taskAffinity 文件。虽然你不需要这里,但你应该知道。

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