我有很多关闭活动的应用程序,用户可以在活动之间走动。如何查找某些活动是否在堆栈上(只是为了调用finish())或不在堆栈上?
答案 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
权限。