Relacionando Processos de Componentes do Android

by Paco Pomet / from beautifuldecay.com

Estava estudando o conteúdo a respeito de processos no Android e, por isso fiz a postagem anterior, e me deparei com a dúvida a respeito de quais componentes se encaixam em quais tipos de processos. Como disse anteriormente, é fácil enxergar o ciclo de vida de uma Activity ligada a alguns tipos de processos descritos, mas e os demais elementos como por exemplo o Service, como fico o processo que hospeda uma instância dele? No blog do Leonardo Nakahara há um post  a respeito disso e que solucionou minha dúvida. Ele define os tipos e relaciona com alguns componentes da seguinte forma:

    • Foreground Process (processos que rodam em aplicações que estão na tela do usuário)
      Um processo que é requerido para o que o usuário está fazendo naquele momento. Um processo é considerado em modo foreground se alguma das condições abaixo forem verdadeiras:

      • O processo hospeda uma Activity na qual o usuário está interagindo (quando o método onResume() da atividade foi chamado);
      • O processo hospeda um Service que está ligado a atividade na qual o usuário está interagindo;
      • O processo hospeda um Service que está rodando em modo foreground – o serviço chamou startForeground();
      • O processo hospeda um Service que está executando alguns dos callbacks do ciclo de vida (onCreate(), onStart(), onDestroy());
      • O processo hospeda um BroadcastReceiver() que está executando o método onReceive().

Geralmente apenas poucos processos em modo foreground existem em qualquer momento. Eles são mortos apenas como último recursos – no caso da memória estar tão baixa que não pode sequer continuar rodando.

    • Processo visível
      Um processo que não tem componentes em modo foreground mas que ainda assim afetam o que o usuário vê na tela. Um processo é considerado visível se uma das sequintes condições forem verdadeiras:

      • O processo hospeda uma Activity que não está em foreground mas continua visível para o usuário (seu método onPause() foi chamado). Isso pode ocorrer, por exemplo, se uma atividade em modo foreground chamou um diálogo que permite que a atividade anterior possa ser vista por ele (diálogo flutuante e transparente, por exemplo).
      • O processo hospeda um Service que está ligado a uma atividade visível em modo foreground.

Um processo visível é considerado extremamente importante e não será morto a não ser que retirá-lo da memória seja parte do que a atividade que está rodando necessita (i.e. o processo foi morto de maneira declarada via código).

    • Processo de serviço
      Um processo que esteja rodando um serviço que foi inicializado com o método startService() e não está dentro das duas categorias anteriores. Apesar desses serviços não estarem diretamente ligados ao que o usuário está fazendo no momento, eles são geralmente relacionados com atividades que o usuário está desempenhando, como ouvir música ou fazendo o download de dados da rede. Então o sistema mantém esse processo ativo a não ser que necessite da memória usada por ele.
    • Serviços em Background
      Um processo que hospeda uma atividade que não está mais visível ao usuário (o método onStop() foi chamado). Esses processos não tem impacto direto na experiência do usuário e podem ser mortos pelo sistema para liberar memória.
    • Processos vazios

Um processo que não hospeda qualquer atividade que esteja ativa. A única razão de se manter esse processo ativo é por razões de caching, para que ele seja carregado mais rapidamente quando o usuário precisar dele.

Relacionando com os nomes dados as categorias em posts anteriores, note que Foreground Processos é o mesmo que Processos Ativos ou Active Process, Processo Visível é Visible Process , Processos de Serviço é o mesmo que Processos Iniciados ou Started Service Process, Serviços em Background é mesmo que Processos em Segundo Plano ou Background Process, e, por fim, Processos Vazios é mesmo que Empty Process.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s