Uma coisa me intriga. Parece que se eu usar algum programa no Android e pressionar o botão "Página inicial", vejo a tela inicial e posso executar o programa novamente e vê-lo no mesmo estado em que estava antes. Parece que o programa não foi totalmente reiniciado, apenas suspenso e depois retomado.
No entanto, isso não parece acontecer de forma consistente com o jogo Air Control. Às vezes, quando estou jogando Air Control, pressione "home" e, em seguida, execute novamente o Air Control - ele é pausado (como se eu tivesse pressionado o botão "pause") e posso retomar o jogo. Às vezes, o mesmo leva o Air Control a abandonar o jogo e começar de novo.
Então parece que eu não entendo alguma coisa.
Qual é o problema aqui? O que acontece com um programa quando "casa" é pressionado? Ele continua funcionando ou o que faz?
fonte
Respostas:
Pressionar o botão Homealterna entre o aplicativo e a tela inicial, deixando o aplicativo em execução em segundo plano. É um pouco como alternar entre janelas em um PC com Windows.
Só que quando o telefone estiver com poucos recursos, como memória, ele começará a fechar os aplicativos em execução em segundo plano, para que o telefone tenha recursos suficientes para o que você está tentando fazer agora. Os jogos geralmente estão entre os primeiros aplicativos que o telefone "mata" para economizar recursos, pois geralmente usam muito mais memória e CPU do que outros aplicativos. É por isso que, às vezes, seu jogo ainda está em pausa e, outras vezes, o Android o fechou para você.
O Backbotão é o caminho para fechar aplicativos para que eles sejam realmente fechados.
Veja também Qual é o caminho certo para fechar aplicativos no Android?
fonte
O documento de desenvolvimento do Android, Tasks e Back Stack, cobre isso muito bem. Um trecho relevante:
Resumo : a tarefa é movida para o segundo plano quando você pressiona
Home
e fica na memória, sem realmente fazer nada e mantendo seu estado. Isso significa que (em geral) você pode voltar para a tarefa e ela continuará de onde parou. No entanto, o sistema Android pode - e irá - matar tarefas em segundo plano se precisar recuperar a memória. Quando e se isso acontecer depende inteiramente do sistema e é provavelmente por isso que você vê um comportamento inconsistente ao retomar.Se a tarefa for destruída pelo sistema, ela deverá ser recriada quando você a iniciar novamente. Portanto, a menos que o autor do aplicativo tenha tomado medidas para salvar o estado do aplicativo durante o processo de destruição, ele será perdido (e salvar o estado exato em coisas como jogos é bastante impraticável).
Outro bom documento (mas também detalhado) é o que cobre o Ciclo de Vida da Atividade (há um bom fluxograma se você rolar um pouco).
fonte
Pressionar a tecla Início permite que o usuário inicie uma nova tarefa, mostrando o iniciador. Todas as tarefas ativas (e, portanto, as atividades, inclusive o exemplo "Controle aéreo") chamarão o método deles
onPause()
.Cabe ao aplicativo (e sua atividade) restaurar o estado exato exato quando voltar visível. Também é possível que o Processo de aplicativos seja interrompido enquanto a Atividade está em segundo plano, mas isso não deve afetar a experiência do usuário. O usuário não deve saber a diferença se uma Atividade foi interrompida ou se também foi interrompida. Isso poderia explicar o comportamento diferente do Air Control, que pode ser um indício de uma implementação defeituosa do gerenciamento do ciclo de vida do Android.
fonte
destroy()
os componentes correspondentes do aplicativo.onStop
método é chamado. Um processo morto não significa que a atividade recebe seuonDestroyed
método chamado, embora seja realmente semelhante. "Matar" um processo de atividade significa que a VM é removida da RAM. Para mim, isso (matá-lo no Android) provavelmente afeta a experiência do usuário.Minha reputação ainda é muito baixa neste site para votar, por isso estou respondendo para enfatizar a resposta de Flow. Continuo com esse problema em um dos meus aplicativos. Eu tenho vários controles giratórios e você deve salvar explicitamente o estado deles em onPause () e depois restaurar os estados em onResume () - o Android não lembra seus estados automaticamente.
Outra complicação é que, às vezes, o Android chama a função onCreate () de um aplicativo quando você espera que ele chame onResume ().
Portanto, seu problema com o Air Control (ou qualquer outro aplicativo) é específico desse aplicativo e você deve relatar o comportamento ao desenvolvedor para correção. A maioria dos aplicativos tem um email de contato no Market.
BTW, se você quiser entender o ciclo de vida do aplicativo, recomendo o Capítulo 2 do Hello, Android de Ed Burnette, especialmente a figura 2.3.
fonte
Botão Início Pressionado quando em um aplicativo:
A maioria dos aplicativos salva seu estado (qualquer bit de dados necessário para manter-se consistente ao ser reiniciado) e o dispositivo alterna para o aplicativo iniciador.
Botão Início Pressione quando estiver na tela inicial:
Isso é configurável por muitos lançadores de terceiros; no entanto, muitos deles são padrão para retornar à tela inicial "principal" (o iniciador padrão faz isso).
Com o que seu amigo pode estar preocupado:
A troca de aplicativos pode consumir muita memória e causar várias gravações em disco para salvar os dados. Isso usa bateria; no entanto, geralmente não é a principal causa do consumo de bateria nos dispositivos (os sistemas operacionais são otimizados para fazer isso).
Alguns aplicativos continuarão sendo executados como um aplicativo em segundo plano; portanto, pressionar o botão home não os matará (por exemplo, o Google Play Music continuará sendo reproduzido após pressionar o botão home).
Seu amigo pode estar preocupado com o fato de que, ao pressionar o botão inicial, você não saiu do programa e, portanto, ele ainda está em execução. O Android descarregará esses aplicativos conforme necessário.
Você e seu amigo devem se preocupar mais com a tela - que consome mais energia.
fonte