在整个应用中只保留每个活动的一个实例

Sag*_*yak 5 android launchmode android-activity

我想在我的应用程序中保留每个启动的单个实例Activity.launchMode singleTask是一个选项,但它只适用于一个Activity.

我想要

  • Activity如果没有实例则启动一个并调用它.
  • 如果Activity已经存在任何其他实例,那么该实例将在不创建新实例的情况下被带到前面Activity.
  • 此属性将应用于多个Activity.
  • No Activity确保它始终位于历史堆栈的顶部.

我的工作到现在为止:

我得到了许多对我的案件无效的建议,所以我想指出这些建议,以便没有其他人会给出同样的建议.

  • 我设置了launchModeto singleTop,只有当Activity它位于历史堆栈的顶部时才有用.仅当onNewIntent()Activity位于历史堆栈的顶部时才会被调用.在我的情况下,Activity可能在堆栈中的任何位置.所以这不起作用.

Dav*_*ser 12

当您启动时Activity,请执行以下操作:

Intent intent = new Intent(this, MyActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

如果这个实例Activity已经存在,那么它将被移到前面.如果实例不存在,则将创建新实例.