代码之家  ›  专栏  ›  技术社区  ›  Richard Szalay

替换当前活动

  •  53
  • Richard Szalay  · 技术社区  · 15 年前

    我需要用新的活动替换当前的活动。也就是说,我想启动一个新的活动并从任务堆栈中删除当前活动。

    根据文档,最好的方法似乎是使用 Activity.startActivity 照常,然后打电话 Activity.finish 立即关闭当前活动。

    这是这些API的有效用法还是我应该做其他事情?

    5 回复  |  直到 6 年前
        1
  •  55
  •   Tushar    15 年前

    对。这样使用API是可以的。

        2
  •  27
  •   Jeremie D    9 年前

    实现这一点的正确方法是使用以下方法:

    Intent intent = new Intent(this,MyActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_TASK_ON_HOME);
    startActivity(intent);
    this.finish();
    

    代码假定您在活动中,否则如果您使用片段,请使用 获取活动()

    这样,活动就开始了,您可以为“后退”按钮正确设置层次结构,还可以销毁相应的活动。

        3
  •  5
  •   Lucifer phtrivier    13 年前

    试用使用 FLAG_ACTIVITY_TASK_ON_HOME , FLAG_ACTIVITY_NEW_TASK 在意向标记中

        4
  •  4
  •   Fangming Cheng    9 年前

    您可以在活动中添加android:launchMode=“singleInstance”,然后重写onNewIntent方法以更新日期。

    参考文献 PlayerActivity in ExoPlayer Demo

        5
  •  0
  •   Andy Weinstein    6 年前

    您可以在启动活动时使用“活动”标志“清除”任务。我还将清单中活动的launchMode定义为singletask,但这是因为我希望新活动使用这种行为。我认为,无论您在新活动中使用什么Launchmode,您都可以获得清除以前活动所需的内容,只要您传递StartActivity标志“活动”“清除”任务。