Убить все последние приложения в андроиде

Когда я долго нажимаю клавишу «Домой» на своем устройстве Android, я получаю список всех последних приложений. Теперь я хочу программно убить все мои последние приложения из своего приложения. Я могу получить список всех последних приложений, но не могу убить все приложения.

Я хочу добиться этого с помощью Android версии 4.x.

Может ли кто-нибудь направить меня?


person Ramesh Solanki    schedule 29.07.2012    source источник


Ответы (2)


Сначала получите список RunningTaskInfo записей, используя следующее:

 [public List<ActivityManager.RunningTaskInfo> getRunningTasks (int maxNum)][1]

Справочник

После этого вы можете использовать идентификаторы процессов в этом списке, чтобы завершить соответствующие процессы, используя либо

activityManager.killBackgroundProcess(pid);
                    or
android.os.Process.killProcess(pid);

в зависимости от того, можете ли вы убить этот процесс. Способ их уничтожения подробно описан здесь.

person Anirudh Ramanathan    schedule 29.07.2012
comment
Я пытался, как вы меня направляли, но все же все последние приложения существуют. Не могли бы вы рассказать мне больше, как этого добиться? - person Ramesh Solanki; 29.07.2012
comment
См. это для руководства по уничтожению процессов, на уничтожение которых у вас нет прямых прав. - person Anirudh Ramanathan; 29.07.2012
comment
Итак, вы говорите, что вам нужно иметь рутированный телефон и приложение для убийства, чтобы иметь повышенные привилегии, чтобы это работало. - person wojciii; 29.07.2012
comment
Нет. Нет. Если вы прочитаете этот ответ, вы увидите The second API works by telling the built in ActivityManager that you want to kill processes associated with a specific Package. , потому что killProcess() может убивать только процессы, принадлежащие этому пользователю. Каждое приложение работает как отдельный пользователь в виртуальной машине Dalvik. Следовательно, обходной путь с разрешением KILL_BACKGROUND_PROCESSES. (Ссылка) - person Anirudh Ramanathan; 29.07.2012
comment
Я пробовал с помощью ActivityManager.killBackgroundProcesses(String packageName), но он не работает, и процесс продолжает работать. - person Ramesh Solanki; 29.07.2012

Вы можете попробовать Process.killProcess(). Но это не всегда работает:

Убить процесс с заданным PID. Обратите внимание, что, хотя этот API позволяет нам запросить уничтожение любого процесса на основе его PID, ядро ​​по-прежнему будет налагать стандартные ограничения на то, какие PID вы действительно можете убить. Обычно это означает только процесс, выполняющий пакеты/приложение вызывающей стороны, и любые дополнительные процессы, созданные этим приложением; пакеты, использующие общий UID, также смогут уничтожать процессы друг друга.

person Uriel Frankel    schedule 29.07.2012