android - 一次关闭所有最近打开/运行的应用程序按钮-android

标签 android android-layout android-intent android-activity

我想一次关闭所有最近的应用程序。我找到了以下代码,但它只显示最近的应用程序。我想关闭所有这些最近的应用程序。

显示所有最近的应用列表代码:(但我不想列出我需要关闭所有最近的应用)

Class serviceManagerClass = Class.forName("android.os.ServiceManager");
Method getService = serviceManagerClass.getMethod("getService", String.class);
IBinder retbinder = (IBinder) getService.invoke(serviceManagerClass, "statusbar");
Class statusBarClass = Class.forName(retbinder.getInterfaceDescriptor());
Object statusBarObject = statusBarClass.getClasses()[0].getMethod("asInterface", IBinder.class).invoke(null, new Object[] { retbinder });
Method clearAll = statusBarClass.getMethod("toggleRecentApps");
clearAll.setAccessible(true);
clearAll.invoke(statusBarObject);
Toast.makeText(getApplicationContext(), "All recent app closed....", Toast.LENGTH_LONG).show();

最佳答案

不,即使使用 Process.killProcess() 方法,也无法从“最近的应用程序”列表中删除并删除用户最近的应用程序。 阅读这两个答案:
- Kill another application on Android?
- How to kill currently running task in android

但是,您可以做的是重新启动最近应用的后台进程(这是大多数来自 Google Play 的 TaskKillers 实际上所做的) ):

  • 在 list 中添加 KILL_BACKGROUND_PROCESSES 用户权限:

    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>
    
  • 然后是 killBackgroundProcesses(以前称为 restartPackage)用于您想要“杀死”的进程(即使它不是实际杀死)

    ActivityManager actvityManager = (ActivityManager)
            this.getSystemService( ACTIVITY_SERVICE );
    List<ActivityManager.RunningAppProcessInfo> procInfos = actvityManager.getRunningAppProcesses();
    for(ActivityManager.RunningAppProcessInfo runningProInfo:procInfos){
        if (runningProInfo.processName.equals("PACKAGE_NAME_YOU_WANT_TO_KILL")) {
            actvityManager.killBackgroundProcesses(runningProInfo.processName);
        }
    }
    

因此,“被杀死”的应用程序不再出现在正在运行的进程列表中,它们会从内存中删除。应用程序仍然在最近的应用程序列表中,您无法对其执行任何操作 - 请参阅答案 clear all recent task Programmaticcally

希望对你有帮助。

关于android - 一次关闭所有最近打开/运行的应用程序按钮-android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34808962/

相关文章:

android - 如何在开发过程中禁用 Crashlytics

android - 为什么 9 补丁图形大小在模拟器中正确但在手机上不正确?

android - 以编程方式 LinearLayout 权重

多模块应用的 Android 测试覆盖率报告

android - 如何检测Android WebRTC轨道结束

android - 从字符串加载 html 时 TWebBrowser 抛出线程异常

android - 广告加载后adview下面的ImageView停止布局跳转

java - 如何在 Android 中将此图像设置为 Activity

Android Intent.ACTION_VIEW 基本身份验证

java - Android SearchView.OnQueryTextListener() 意外启动 Intent