Исходный код диспетчера задач Android

Мне было интересно, есть ли какие-либо проекты диспетчера задач Android с открытым исходным кодом (диспетчер процессов/детализатор процессов), на которые я могу взглянуть. Я разрабатываю приложение для своего университетского проекта, и это помогло бы мне получить представление о хорошем диспетчере задач! кто-нибудь знает некоторые проекты с открытым исходным кодом, где я могу прочитать или просмотреть исходный код! Мне не нужно скачивать исходники.

Спасибо!


person Imesh Chandrasiri    schedule 15.07.2012    source источник
comment
Stack Overflow не заменяет хорошую поисковую систему.   -  person Robert Harvey    schedule 15.07.2012
comment
code.google.com/p/android-task-manager   -  person Mohsin Naeem    schedule 15.07.2012


Ответы (3)


Вы должны взглянуть на Диспетчер задач Astrid, это приложение для Android с открытым исходным кодом, исходный код которого вы можете получить в этом репозиторий github. Вас также может заинтересовать этот проект.

person K_Anas    schedule 16.07.2012
comment
astrid не является диспетчером процессов, а freetaskmanager слишком стар, чтобы его нельзя было построить напрямую. - person superarts.org; 21.09.2012

Короче говоря, Task Killers работают, опрашивая ОС для получения списка запущенных в данный момент процессов и памяти, которую они потребляют. Затем, либо с помощью интеллектуального алгоритма, либо с помощью пользовательского ввода, убийцы задач вызывают систему, говоря ей, что нужно завершить процесс. Есть два API, которые вы можете сделать.

Они есть :

Process.killProcess(int pid) 

ActivityManager.killBackgroundProcesses(String packageName) 

Сначала это работает, вызывая Process.killProcess(int pid), где pid — это уникальный идентификатор для конкретного процесса. Android убивает процессы так же, как это делает Linux; однако пользователь может убивать только те процессы, которыми он владеет. В Android каждое приложение запускается с уникальным UID (UserID). Приложения, использующие этот API, могут убивать только свои собственные процессы, поэтому в документации для Process.killProcess(int pid) приведено следующее объяснение:

Убить процесс с заданным PID. Обратите внимание, что, хотя этот API позволяет нам запросить уничтожение любого процесса на основе его PID, ядро ​​по-прежнему будет налагать стандартные ограничения на то, какие PID вы действительно можете убить. Обычно это означает только процесс, выполняющий пакеты/приложение вызывающей стороны, и любые дополнительные процессы, созданные этим приложением; пакеты, использующие общий UID, также смогут уничтожать процессы друг друга. При вызове этого метода сигнал генерируется ОС и отправляется процессу. Всякий раз, когда процесс получает сигнал от ОС, он должен либо обработать этот сигнал, либо немедленно умереть. Такие сигналы, как SIG_KILL, не могут быть обработаны и приводят к немедленному завершению процесса-получателя. Если вы хотите убить процессы, для уничтожения которых у вас нет прав, то есть это не ваш процесс, вы должны переключить пользователей или повысить свои привилегии (на Android для этого требуются привилегии root на устройстве).

Второй API работает, сообщая встроенному диспетчеру действий, что вы хотите убить процессы, связанные с определенным пакетом. Этот API позволяет обойти потребность в том, чтобы ваш UID совпадал с UID процесса, потому что он требует, чтобы пользователь принял разрешение KILL_BACKGROUND_PROCESSES. Это разрешение сигнализирует ОС, что приложение было одобрено пользователем как убийца задач. Когда таск-киллер хочет убить приложение, он говорит ОС, чтобы убить процесс, позволяя приложению обойти проблему возможности убивать только те процессы, которыми оно владеет.

В Android Docs говорится, что этот API фактически использует первый API Process.killProcess.

Пусть система немедленно завершит все фоновые процессы, связанные с данным пакетом. Это то же самое, что ядро ​​убивает эти процессы, чтобы освободить память; система позаботится о перезапуске этих процессов в будущем по мере необходимости. Если вы хотите узнать больше, я предлагаю вам прочитать о сигналах Posix и команде kill в Linux.

person Farhad Faghihi    schedule 27.03.2015

Взгляните на fossil, для разработки собственного приложения у него есть трекер и все остальное, что вам может понадобиться. в одном месте.

person Wood Dragon    schedule 06.10.2012