如果活动在Backstack中,如何检查活动并将其带到前面

时间:2015-02-23 09:46:51

标签: android android-activity back-stack

我已经阅读了很多关于后台堆栈和任务的问题,但我没有在我的问题中得到正确的解决方案。我有一个问题,那就是我有一个多实例活动(在最明确的声明)。服务可以多次打开。这个活动有一个按钮,可以将用户带到另一个活动(让我们说结果活动),但在转移到结果活动之前,我真的想检查这个多实例活动是否有任何背景实例,我想检查一下,如果有活动,那么在转移到Result活动之前,我应该导航到此活动的另一个实例,直到用户访问了此活动的所有实例,并且一旦访问了所有实例,在最后一个实例上,用户现在可以导航到Result活动。那么我怎么能这样做,我已经阅读了下面的代码,但我不知道如何使用它。

    // 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;
}

2 个答案:

答案 0 :(得分:2)

做你想做的事的方法是

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);

试试这个。这应该有用。

答案 1 :(得分:0)

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

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

参考this link