Android-убийца задач

Я пытаюсь написать простую задачу убийцы. Я знаю, что не должен убивать задачи в Android, но мне не терпится попробовать что-то подобное. У меня есть следующий код:

<code>List<RunningAppProcessInfo> procInfo = activityManager.getRunningAppProcesses();
for (int i = 0; i < procInfo.size(); i++) {
    Log.v("proces " + i,procInfo.get(i).processName + " pid:" + procInfo.get(i).pid + " importance: " + procInfo.get(i).importance + " reason: " + procInfo.get(i).importanceReasonCode);
    //First I display all processes into the log
}
for (int i = 0; i < procInfo.size(); i++) {
    RunningAppProcessInfo process = procInfo.get(i);
    int importance = process.importance;
    int pid = process.pid;
    String name = process.processName;
    if (name.equals("manager.main")) {
        //I dont want to kill this application
        continue;
    }
    if (importance == RunningAppProcessInfo.IMPORTANCE_SERVICE) {
        //From what I have read about importances at android developers, I asume that I can safely kill everithing except for services, am I right?
        Log.v("manager","task " + name + " pid: " + pid + " has importance: " + importance + " WILL NOT KILL");
        continue;                       
    }
    Log.v("manager","task " + name + " pid: " + pid + " has importance: " + importance + " WILL KILL");
    android.os.Process.killProcess(procInfo.get(i).pid);
}   
procInfo = activityManager.getRunningAppProcesses();
//I get a new list with running tasks
for (int i = 0; i < procInfo.size(); i++) {
    Log.v("proces after killings" + i,procInfo.get(i).processName + " pid:" + procInfo.get(i).pid + " importance: " + procInfo.get(i).importance + " reason: " + procInfo.get(i).importanceReasonCode);
}
</code>

Моя проблема здесь в том, что когда я выполняю этот код, я сначала получаю список всех задач, вот и все. Чем я вижу в журнале несколько строк:

<code>Sending signal. pid: (processId) SIG: 9
</code>

Я полагаю, это сигнал к смерти. Но в конце моего кода, когда я отображаю все запущенные процессы, список остается прежним, ни одна задача не была убита. Есть идеи почему? Спасибо!

Ответы на вопрос(3)

killProcess() будет работать только для вас, чтобы убить свои собственные процессы. Вы можете сказать это почтение документации.

killProcess попробуйте позвонитьkillProcess много раз. как

for (int i = 0; i < 10; i++)
{
 android.os.Process.killProcess(procInfo.get(i).pid);
}

НОТА:

версия & # xFF12;. & # xFF12;  - killBackgroundProcesses: & quot; Это то же самое, что ядро, убивающее эти процессы, чтобы восстановить память; система позаботится о перезапуске этих процессов в будущем по мере необходимости. & quot;

ActivityManager am = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
am.killBackgroundProcesses("com.est.testetst");

Required Permissions:

android.Manifest.permission.KILL_BACKGROUND_PROCESSES

версия & # xFF12;. & # xFF11;  - restartPackage - & quot; Этот метод устарел. (работает для версии менее 2.2.     Теперь это просто оболочка для killBackgroundProcesses (String); предыдущее поведение здесь больше не доступно приложениям, поскольку оно позволяет им ломать другие приложения, удаляя их сигналы тревоги, останавливая их службы и т. д. & quot;

 ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    am.restartPackage(getPackageName());

Required Permissions:

<uses-permission android:name="android.permission.RESTART_PACKAGES" />
 Tomáš 'Guns Blazing' Frček06 мая 2012 г., 17:07
Спасибо, я пошел с killBackgroundProcesses и, кажется, работает нормально
Решение Вопроса

потому что Ядро будет применять разрешения. Попробуйте это вместо:

ActivityManager activityManager = (ActivityManager) context.getSystemService("activity");
activityManager.restartPackage(packageName);

вам понадобятся следующие разрешения в манифесте:

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

РЕДАКТИРОВАТЬ:

На самом деле restartPackage устарела. используйте killBackgroundProcesses () вместо!

Ваш ответ на вопрос