如果 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);
我已经阅读了很多关于 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);