Вопрос по android – Android-убийца задач

3

Я пытаюсь написать простую задачу убийцы. Я знаю, что не должен убивать задачи в 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   ответа
1

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

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 () вместо!

2

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" />
Спасибо, я пошел с killBackgroundProcesses и, кажется, работает нормально Tomáš 'Guns Blazing' Frček
0

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

Похожие вопросы