📅  最后修改于: 2023-12-03 14:49:25.918000             🧑  作者: Mango
在 Android 应用程序中,最近的列表(Recent Tasks List)是用户可以通过 “最近” 按钮或者手势打开的一个列表,用于方便用户切换最近使用过的应用程序。
本文将介绍如何从最近的列表中删除一个活动(Task)。
在删除一个活动之前,我们需要先获取当前活动的 Task ID。
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> recentTasks = am.getRunningTasks(Integer.MAX_VALUE);
for (ActivityManager.RunningTaskInfo task : recentTasks) {
if (task.topActivity.getPackageName().equals(getPackageName())) {
int taskId = task.id;
// 在这里执行删除 Task 的操作
break;
}
}
代码解析:
getSystemService()
方法获取 ActivityManager
对象。am.getRunningTasks()
方法获取当前正在运行的所有 Task 的列表。由于传入的参数为 Integer.MAX_VALUE
,表示获取所有的 Task。for
循环遍历所有 Task,并根据包名判断当前 Task 是否属于当前应用程序。获取当前活动的 Task ID 之后,我们可以使用 ActivityManager
中的 removeTask()
方法来删除指定的 Task。
am.removeTask(taskId, ActivityManager.REMOVE_TASK_KILL_PROCESS);
代码解析:
removeTask()
方法需要两个参数:
taskId
:要删除的 Task 的 ID。flags
:删除 Task 的标志位。在本例中,我们使用了 ActivityManager.REMOVE_TASK_KILL_PROCESS
标志位,表示在删除 Task 的同时,杀掉该 Task 对应的进程。这一标志位是可选的,如果不指定该标志位,则只会删除 Task,在进程中也不会有任何影响。
public void removeTaskFromRecent() {
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> recentTasks = am.getRunningTasks(Integer.MAX_VALUE);
for (ActivityManager.RunningTaskInfo task : recentTasks) {
if (task.topActivity.getPackageName().equals(getPackageName())) {
int taskId = task.id;
am.removeTask(taskId, ActivityManager.REMOVE_TASK_KILL_PROCESS);
break;
}
}
}
本文介绍了如何从最近的列表中删除一个活动,首先需要获取当前活动的 Task ID,然后使用 removeTask()
方法删除指定的 Task。如果要同时杀掉该 Task 对应的进程,可以指定 REMOVE_TASK_KILL_PROCESS
标志位。