
Segue abaixo uma lista de tipos de processos da maneira que o Android categoriza e define suas prioridades:
- Processos Ativos: São processos em interação com usuário (foreground). São os processos mantidos a todo custo pelo gerenciador;
- Processos Visíveis: São processos que estão visíveis, mas não estão interagindo com o usuário. Estes processos somente são terminados em casos de extrema necessidade, para que um processo ativo continue executando;
- Processos Iniciados: São processos hospedando serviços que foram iniciados e não possuem interface visível. Como não interagem diretamente com o usuário possuem um nível de prioridade inferior ao de processos visíveis;
- Processos em Segundo Plano: São processos de atividades que não estão visíveis e não possuem serviços iniciados. Estes processos são finalizados utilizando-se o padrão Last–Seen–First–Killed;
- Processos Vazios: São processos já finalizados, que são mantidos na memória pelo sistema operacional, para acelerar o start–up do mesmo e melhorar a performance do sistema. Estes processos são frequentemente finalizados para serem finalizados e cederem recursos aos processos em execução.
Perceba a relação com a categorização das Activities. Uma activity ou processo em foreground, torna o status do processo que os hospedam em foreground. As activities e serviços hospedadas em um processo estando em status background, torna o status do processo em background.
Quando temos processos considerados de baixa prioridade, eles podem ser eliminados da memória em caso de necessidade, por exemplo, por falta de espaço. Isso é feito pelo Oom Handling, que é um controlador de memória do sistema operacional responsável por encerrar processos caso verifique que a memória que esta disponível esteja abaixo do valor mínimo aceitável. Outro detalhe é que a entrada no manifesto para cada tipo de elemento componente da aplicação – , , e – suporta um atributo android:process que pode especificar o processo no qual o componente deverá rodar.