Как менеджеры задач убивают приложения? - PullRequest
14 голосов
/ 10 июня 2011

Прежде всего, я знаю, что плохо использовать диспетчер задач / убийцу в Android и все такое, но мне было интересно, как менеджеры задач, такие как Advanced Task Killer убивают другие приложения?
Я хотел разработать простуюприложение, которое будет делать это, только для обучения.
Я пытался выполнить команду Linux kill pid из моего приложения, но это не сработало, может быть, требуется root?

Итак, как мне это сделать из моего приложения?У меня есть простая ListActivity, которая показывает текущие задачи, и когда пользователь долго нажимает на элемент, я хочу убить эту задачу.

Ответы [ 4 ]

9 голосов
/ 12 июня 2011

Вы можете отправить сигнал, используя:

Process.sendSignal(pid, Process.SIGNAL_KILL);

Чтобы полностью завершить процесс, рекомендуется вызвать:

ActivityManager.killBackgroundProcesses(PackageName)

перед отправкой сигнала.

1 голос
/ 25 июля 2012

Слейтон имеет хороший ответ на этот вопрос . Я добавляю эту деталь к его ответу:
- когда вы используете ActivityManager.killBackgroundProcesses(PackageName), вы не можете убить процесс переднего плана.

Iвидел ссылку на проект с открытым исходным кодом в K_Anas'answer на этот вопрос :
- репозиторий github
- code.google

0 голосов
/ 26 октября 2016

1- Добавить в манифест

<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>

2 - В вашем коде

Runtime.getRuntime().exec("adb shell killall com.example.app");

Примечание: Ваше приложение должно иметь доступ к системе / приложению оболочки adb (разрешение root)

0 голосов
/ 25 июля 2012

попробуйте это,

android.os.Process.killProcess(pid)

это будет работать ...

...