从最近应用程序中以编程方式移除应用程序

65

不完全是,因为我希望整个应用程序都被排除在最近使用列表之外,并且我想随时进行操作,而不仅仅是在启动“Activity”时。 - pandre
你找到解决方案了吗?我也在尝试做同样的事情。 - Jakob Harteg
我会将我的解决方案发布为一个答案。 - pandre
7个回答

47

通常情况下,当您启动一个Activity时,想要为其设置特殊属性,可以向Intent传递特殊标志。在这种情况下,使用FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS标志。

更新:

如果您需要隐藏当前已经运行的Activity,您可以将此标志与FLAG_ACTIVITY_CLEAR_TOP结合使用,将新的Intent发送到现有的Activity。但是,您需要考虑并进行实验,以了解用户在堆栈中移动时会发生什么以及是否会使您的应用程序重新出现在最近的应用程序中。


26

可以使用ActivityManager.AppTask功能来实现此操作(从API 21开始)

    ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
    if(am != null) {
        List<ActivityManager.AppTask> tasks = am.getAppTasks();
        if (tasks != null && tasks.size() > 0) {
            tasks.get(0).setExcludeFromRecents(true);
        }
    }

2
我如何在API级别低于21的情况下使用该方法? - cimenmus

25

将以下行添加到您正在退出应用程序的 Activity 中:

@Override
public void finish() {
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        super.finishAndRemoveTask();
    }
    else {
        super.finish();
    }
}

10
以下是标志 android:excludeFromRecents 的定义(我知道您已经看过):
是否应将此活动启动的任务从最近使用的应用程序列表(“最近使用的应用”)中排除。也就是说,当此活动是新任务的根活动时,该属性确定该任务是否不应出现在最近使用的应用程序列表中。“true”表示任务应从列表中排除;“false”表示它应包括在内。默认值为“false”。
因此,要从最近应用程序列表中删除应用程序,您可以在应用程序中的第一个活动上设置此标志,因为该活动为您的应用程序启动任务。如果您的应用程序中有多个任务(对于大多数应用程序来说不太可能),则需要为所有任务的根活动设置此标志。

5
如果我想在启动“Activity”后将该应用从“最近使用的应用”中排除,该怎么办? - pandre

7

当您的活动完成并应该关闭时,请调用此方法,并作为任务完成根活动的一部分完全删除任务。

finishAndRemoveTask();

谢谢。这对于通过BackPress或SwipeLeft删除即时应用程序并在其他情况下将其保留在Recents中非常有帮助。 - JAW

2
收到其他答案后,我设法找到了以下解决方法:我有一个名为XPTO的Activity,在清单中声明为

基本上,当我想让应用程序从最近列表中消失时,我会完成所有其他活动,然后启动XPTO,它基本上会终止应用程序(在其onResume()中调用android.os.Process.killProcess(android.os.Process.myPid());
如果有更好的方法,请分享

0
根据用户的需求,我不得不停止前台服务中的所有应用程序进程。当我使用了setExcludeFromRecents时,应用程序就永远从最近使用的应用程序中消失了 - 我不想要这个结果,所以我使用了finishAndRemoveTask。这是我的代码示例:
applicationContext.getSystemService(ActivityManager::class.java).appTasks.firstOrNull { task ->
        task.taskInfo.baseActivity?.packageName == applicationContext.packageName
    }?.finishAndRemoveTask()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接