如何查找某些活动是否在堆栈上(只是调用finish())或不在堆栈上?

时间:2012-03-14 12:44:17

标签: android android-widget

我有很多关闭活动的应用程序,用户可以在活动之间走动。如何查找某些活动是否在堆栈上(只是为了调用finish())或不在堆栈上?

2 个答案:

答案 0 :(得分:0)

你需要对你正在寻找的东西更清楚一点。

此类可用于了解正在运行的进程的状态。 http://developer.android.com/reference/android/app/ActivityManager.html

还将您的AndroidManifest.xml上的活动添加为SingleInstace (Application-> Activity-> Launch mode-> SingleInstance)。 如果您的活动正在运行,它将不会创建新的活动。

使用此功能可以帮助您清除应用中A之前调用的所有热门活动。

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

答案 1 :(得分:0)

您可以检索活动任务列表(以及参与每项任务的组件),如下所示:

ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = am.getRunningTasks(1);
if (!tasks.isEmpty()) {
    ComponentName topActivity = tasks.get(0).topActivity;
    ...
}

但是,这需要您在AndroidManifest中要求android.permission.GET_TASKS权限。