9Aug

O que acontece exatamente quando você desliza uma aplicação Android da lista de aplicativos recentes?

Quando você desliza um aplicativo da sua lista de aplicativos atualmente no Android, o que acontece exatamente com o aplicativo e os dados? Leia mais enquanto investigamos.

Today's Question &A sessão de resposta vem até cortesia do Android Enthusiast - uma subdivisão da Stack Exchange, um agrupamento comunitário de sites da Q & A.

O questionário

Android Enthusiast Eldarerathis tem curiosidade sobre a funcionalidade de deslocamento do aplicativo que permite que você faça sua lista de aplicativos em execução através do botão de casa e, em seguida, deslize-os para a direita, presumivelmente para fechá-los:

A lista de aplicativos recentes emO Ice Cream Sandwich adicionou a capacidade de deslizar os aplicativos para fora da lista, descartando-os de forma permanente( e, até onde eu sei, é uma função de baunilha, não uma CM / ROM personalizada).A documentação e os destaques da plataforma não parecem cobrir o funcionamento do under-the-hood desta funcionalidade, mas estou curioso para saber o que o sistema está realmente fazendo.

Além disso, adicionei a minha curiosidade, decidi fazer um teste rápido: comecei a tocar música em uma instalação CM9 e, em seguida, recuei-la. Então verifiquei a lista de aplicativos recentes e vi que estava realmente lá( e no estado apropriado, com base na miniatura).Em seguida, entrei nas Configurações - & gt; Aplicações e força parou o aplicativo Música, mas ainda estava listado na lista recente, levando-me a acreditar que não está conectado a processos persistentes em segundo plano.

Percebendo agora que a música pode ter sido uma má escolha, eu também testei com o aplicativo USA Today. Isso exibiu basicamente o mesmo comportamento, e parecia que foi forçado a "relançar" após a parada de força( o que faz sentido), embora a miniatura na lista de aplicativos recentes não refletisse isso( em cache, acho que?).

Então, o que realmente acontece no nível do sistema operacional quando você desliza um aplicativo da lista recente? Simplesmente limpa os dados do aplicativo da RAM e o recarregá-lo, destruindo seu estado salvo?

O que exatamente acontece quando você desliza o aplicativo fora da lista?

O contribuidor

do entusiasta do Android Austin Mills oferece alguma visão:

Swiping apps da lista de aplicativos recentes é baunilha, e sim, não está bem documentada. Este tem sido o tema de uma quantidade decente de discussão em vários fóruns do Android. .. o consenso parece ser melhor descrito aqui em alguns comentários: que o comportamento é semelhante, mas não exatamente o mesmo que o encerramento de um aplicativo - em geral( para aplicativos quenão define a manipulação explícita do botão traseiro) é o mesmo que acertar o tempo suficiente dentro de um aplicativo que você sai fora dele.

O link possui mais detalhes sobre os detalhes, mas, em geral, você pode pensar que ele deixou o aplicativo.

Específico para o aplicativo Música, acredito que ele inicia um serviço, então, enquanto a tarefa em si( o aplicativo Música / UI) pode ser fechada, o serviço continua a ser executado em segundo plano para que sua música não pare repentinamente apenas porque aA tarefa foi esclarecida por motivos de gerenciamento de memória. Isso pode afetar o que você viu.

Então, participando do círculo de perguntas e respostas da vida, Eldarerathis voltou com algumas pesquisas próprias para completar a resposta:

Parece ter encontrado os termos de pesquisa mágica que levaram a algumas explicações dos funcionários do Google. Especificamente, encontrei alguns lugares diferentes onde Dianne Hackborn explica o que acontece quando você desliza algo da lista recente. O primeiro é um comentário em uma de suas postagens do Google+:

[W] O que acontece especificamente quando você desliza uma tarefa recente é:( 1) mata qualquer fundo ou processos vazios do aplicativo( veja aqui o que isso significa)e( 2) usa a nova API para informar todos os serviços do aplicativo sobre a tarefa que está sendo removida para que ele possa fazer o que for apropriado.

Ela também observa em um comentário de blog:

Na verdade, remover uma entrada em tarefas recentes matará todos os processos em segundo plano que existem para o processo. Isso não irá fazer com que os serviços parem, no entanto, há uma API para descobrir que a tarefa foi removida para decidir se eles queriam que isso significasse que eles deveriam parar. Isto é para que a remoção diga que a tarefa recente de um aplicativo de e-mail não fará com que pare de verificar o e-mail.

Se você realmente deseja parar completamente um aplicativo, você pode pressionar as tarefas recentes para acessar as informações do aplicativo e pressionar a força para parar. A parada de força é uma matança completa do aplicativo - todos os processos são mortos, todos os serviços parados, todas as notificações removidas, todos os alarmes removidos, etc. O aplicativo não está autorizado a iniciar novamente até que seja explicitamente solicitado.

Então, parece que o resumo é que deslizar um aplicativo fora da lista primeiro matará todos os processos em segundo plano para o aplicativo e, em seguida, use onTaskRemoved para notificar o aplicativo de que a tarefa em segundo plano foi removida. Nesse ponto, parece que cabe ao aplicativo decidir o que acontece, então acho que há tecnicamente o não é uma regra rígida sobre o que acontece com o aplicativo além desse ponto.

Tem alguma coisa a adicionar à explicação? Som na parte dos comentários. Deseja ler mais respostas de outros usuários Tech-savvy Stack Exchange? Confira o tópico de discussão completo aqui.