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

时间:2016-01-15 10:25:24

标签: 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();

3 个答案:

答案 0 :(得分:9)

不, kill& amp;从"最近的应用中移除"列出用户最近的应用,即使使用Process.killProcess()方法也是如此。 阅读这两个答案:
   - Kill another application on Android?
   - How to kill currently running task in android

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

  • KILL_BACKGROUND_PROCESSES用户权限添加到您的清单中:

    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>
    
  • 然后killBackgroundProcesses(以前称为restartPackage)用于您想要的过程/流程&#34; kill&#34; (即使它不是真正的杀戮)

    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);
        }
    }
    

结果,&#34;被杀#34;应用程序不再显示在正在运行的进程列表中,它们将从内存中删除。应用仍然在最近的应用列表中,您无法对其执行任何操作 - 请参阅回答clear all recent task Programmaticcally

我希望,这有帮助。

答案 1 :(得分:6)

退出应用程序是Android操作系统的工作。考虑您要退出所有最近的应用程序的原因。如果所有最近的应用程序都没有正确编写,关于Android OS应用程序开发模型,并且它们行为不端,那么它们应该被卸载或修复。

这是关于这个主题的精彩维基:

Is quitting an application frowned upon?

答案 2 :(得分:0)


首先是按照Konstantin Loginov所说的那样运行所有活动,而不是像放置它的名字一样杀死它。如果检查还包括验证您最近的应用程序中列出的进程名称(如果它们在您正在运行的进程中),则可能会更好。

之后,删除最近的应用下的列表。您可能需要查看此thread