A lista de aplicativos recentes no Ice Cream Sandwich adicionou a capacidade de deslizar aplicativos para fora da lista, dispensando-os permanentemente (e, tanto quanto eu sei, essa é uma função de baunilha, não uma ROM de CM / personalizada). Os destaques da documentação e da plataforma não parecem cobrir o funcionamento básico dessa funcionalidade, mas estou curioso para saber o que o sistema está realmente fazendo.
Para aumentar ainda mais a minha curiosidade, decidi fazer um teste rápido: iniciei o Music em uma instalação do CM9 e depois recuei. Verifiquei a lista de aplicativos recentes e vi que ela estava realmente lá (e no estado adequado, com base na miniatura). Em seguida, entrei Settings->Applications
e forcei o aplicativo Música, mas ele ainda estava listado na lista recente, o que me levou a acreditar que não está conectado a processos que permanecem em segundo plano.
Percebendo agora que a música pode ter sido uma má escolha, também testei com o aplicativo USA Today. Isso exibiu basicamente o mesmo comportamento, e parecia ter sido forçado a "relançar" após a parada forçada (o que faz sentido), embora a miniatura na lista de aplicativos recentes não refletisse isso (em cache, suponho?).
Então, o que realmente acontece no nível do sistema operacional quando você tira um aplicativo da lista recente? Simplesmente limpa os dados do aplicativo da RAM e o coleta de lixo, destruindo seu estado salvo?
fonte
Parece que encontrei os termos mágicos de pesquisa que levaram a algumas explicações dos funcionários do Google. Especificamente, encontrei alguns lugares diferentes em que Dianne Hackborn explica o que acontece quando você tira algo da lista recente. O primeiro é um comentário em uma de suas postagens no Google+ :
Ela também observa em um comentário no blog :
Portanto, parece que o resumo é que, ao tirar um aplicativo da lista, todos os processos em segundo plano serão
onTaskRemoved
eliminados e depois usados 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 tecnicamente não existe uma regra rígida sobre o que acontece com o aplicativo além desse ponto.fonte
Há algumas informações no código-fonte nas classes com.android.internal.policy.impl.RecentApplicationsBackground e com.android.internal.policy.impl.RecentApplicationsDialog .
Se eu os leio corretamente, existem manipuladores específicos para selecionar os aplicativos, mas nada de especial para usá-los, exceto
onDetachedFromWindow()
: chamadascom.android.View.onDetachedFromWindow()
que basicamente ocultam o elemento e limpam seus dados. Isso sugere que nada de especial acontece ao passar o aplicativo, o que corresponde à resposta de Austin Mills, porque como a lista não mostra o aplicativo ativo, asonPause()
outras chamadas do sistema feitas ao "sair" de um aplicativo têm já aconteceu.fonte
Eu acho que ele fará o mesmo que o botão Voltar. Exceto uma pequena mudança. Será
finish()
toda a atividade / fragmentos no aplicativo.Acabei de fazer um pequeno teste com um pequeno aplicativo de auto-construção. Você pode testar também. Heres meu aplicativo de teste: https://bitbucket.org/Leandros99/lifecycletest (download disponível também. Para aqueles que não podem criar.)
Em todos os métodos de ciclo de vida de atividade ( http://developer.android.com/reference/android/app /Activity.html#ActivityLifecycle ) imprime um aplicativo ao log. Você pode visualizá-lo com o adb logcat (instale o SDK do Android, o CD nas ferramentas da plataforma em cmd / shell e digite
adb logcat
. Agora você verá, toda vez que fizer algo como pressionar o botão voltar ou o botão home, o aplicativo imprime o método do ciclo de vida mencionado acima. )Sua pergunta: se eu deslizar um aplicativo da gaveta de aplicativos recentes, o
onDestroy
método será chamado. Faz quase o mesmo que o botão Voltar.Espero ter ajudado um pouco. Se houver perguntas, basta perguntar.
fonte
Ele fecha o aplicativo e seus dados armazenados na RAM. Assim, oferecendo mais espaço de RAM para que você possa executar outros aplicativos. No entanto, os serviços em segundo plano NÃO são forçados a fechar automaticamente como resultado do fechamento do aplicativo em uso.
fonte