Подтвердить что ты не робот

Закройте все недавние открытые/запущенные приложения сразу с кнопочным андроидом

Я хочу закрыть все последние приложения сразу. Я нашел следующий код, но он показывает только последние приложения. Я хочу закрыть все эти последние приложения.

Показать все последние строки списка приложений: (но я не хочу, чтобы список закрывал все последние приложения)

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();
4b9b3361

Ответ 1

Нет, невозможно удалить и удалить из последних приложений список последних приложений, даже с помощью метода Process.killProcess(). Прочтите эти два ответа:
- Убить другое приложение на Android?
- Как убить текущую задачу в android

Однако, что вы можете сделать, это перезапустить фоновые процессы последних приложений (что на самом деле делает большинство TaskKillers из Google Play):

  • Добавить 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);
        }
    }
    

В результате "убитые" приложения, которые больше не представлены в списке запущенных процессов, они удаляются из памяти. Приложения в списке последних приложений еще, и вы ничего не можете с ними поделать - см. Ответ очистить все последние задачи Programmaticcally

Надеюсь, это поможет.

Ответ 2

Выход из приложения - это работа ОС Android. Рассмотрите причины, по которым вы хотите закрыть все последние приложения. Если все последние приложения написаны неправильно, в отношении модели разработки приложений для ОС Android, и они плохо себя ведут, тогда их следует удалить или зафиксировать.

Вот замечательная вики по теме:

Выходит ли из приложения с недоверием?

Ответ 3


Сначала нужно запустить все действия, как сказал Константин Логинов, но вместо того, чтобы убить его, как его имя. Лучше, если проверка также включает проверку имен процессов, перечисленных в ваших последних приложениях, если они находятся в ваших запущенных процессах.

После этого удалите список из последних приложений. Вы можете взглянуть на этот поток.