如果 activity 在 Backstack 中,如何检查并将其置于最前面

How to check an activity and bring it to front if it is in Backstack

我已经阅读了很多关于 backstack 和 task 的问题,但是我没有以正确的方式解决我的问题。我有一个问题,那就是我有一个多实例 activity(在清单中声明)。 service.This activity 可以多次打开它有一个按钮,可以将用户带到另一个 activity (比方说结果 Activity),但在移动到结果之前 Activity 我真的想检查这个多实例 activity 是否在后台堆栈中有任何实例,我想检查它以便如果有 activity 那么在移动到那个结果之前 activity 我应该导航到这个 activity 的另一个实例,直到用户访问了这个 activity 的所有实例,一旦访问了所有实例,那么在最后一个实例上,用户现在可以导航到结果 activity。那么我该怎么做,我已经阅读了以下代码,但我不知道如何使用它。

    // Get the Activity Manager
    ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);

    // Get a list of running tasks, we are only interested in the last one,
    // the top most so we give a 1 as parameter so we only get the topmost.
    List<ActivityManager.RunningTaskInfo> task = manager.getRunningTasks(1);

    // Get the info we need for comparison.
    ComponentName componentInfo = task.get(0).topActivity;

    // Check if it matches our package name.
    if (componentInfo.getPackageName().equals(PackageName))
        return true;

    // If not then our app is not on the foreground.
    return false;
}

做你想做的方法是

Intent intent = new Intent(this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | 
                Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_FROM_BACKGROUND); 
startActivity(intent);

试试这个。这应该有效。

您可以使用 FLAG_ACTIVITY_REORDER_TO_FRONT 将您的 activity 置于最前面。

Intent i = new Intent(getApplicationContext(),YourActivity.class);
i.setFlags(Intent. FLAG_ACTIVITY_REORDER_TO_FRONT );
startActivity(i);

参考this link