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

Как диспетчеры задач убивают приложения?

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

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

4b9b3361

Ответ 1

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

Process.sendSignal(pid, Process.SIGNAL_KILL);

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

ActivityManager.killBackgroundProcesses(PackageName)

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

Ответ 2

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

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

Ответ 3

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

android.os.Process.killProcess(pid)

который будет работать...

Ответ 4

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

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

2 - В коде

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

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