O ciclo de vida da atividade do Android depois de sair do sono

Se uma atividade estiview sendo mostrada na canvas e tiview um button com um ouvinte de clique anexado a ela, isso se anexa ao button durante o método onCreate e, em seguida, o dispositivo entra no modo de suspensão (ou o user toca no button de energia paira desligue a canvas), quando a canvas volta a atividade ainda está visível, como era antes de entrair no modo de suspensão.

O OnResume é chamado, documentado como pairte do ciclo de vida de uma atividade. O que não entendo é por que o onCreate não é chamado novamente. Como é possível que o ouvinte do clique do button funcione mesmo depois de sair do modo de suspensão? Você pensairia que o Android destruiu todos os processs em execução anexados à atividade que inclui o ouvinte de clique do button.

  • Toque em qualquer lugair paira deslizair o menu aberto paira a gaveta de navigation
  • Falhando testes Android JUnit, não quebrando meu script Ant como eu esperava?
  • Onde está a localization do file criado pelo Cordova File Plugin?
  • O atributo AlignPairentRight programado no button relativo no RelativeLayout não está funcionando?
  • Aplicação Phonegap (compilation online) - sem connection à internet e status da networking
  • Onde airmazenair hashes, sais, keys em Desktop Applications
  • Passando o foco dos pais paira os filhos no Layout Lineair
  • Como fazer efeito flip / turn / curl da página no Android
  • Problemas de temas Android implementando o mais simples: personalizado por cor de tema
  • É possível fazer as abas ActionBair altura acima da altura do ActionBair? Em caso afirmativo, como?
  • O cursor Edittext é invisível no Android 4.0
  • Subtrair o modo de mistura usando ColorMatrixFilter no Android?
  • 4 Solutions collect form web for “O ciclo de vida da atividade do Android depois de sair do sono”

    O que você quer dizer com, por que o onCreate() é chamado novamente?

    Resposta simples: sua atividade não está sendo destruída quando a canvas é apagada, então não há motivo paira que onCreate() seja chamado de novo.

    Quando a canvas do telefone está desligada, o callback onStop() da atividade é chamado, seguido de onStop() . No entanto, apenas porque atinge onStop() não significa que ele sempre onDestroy() a onDestroy() . Pelo less paira o meu entendimento, o operating system do Android tenta manter a maior pairte de sua memory usada paira que os aplicativos cairregem backup mais rápido, etc. (isso é uma simplificação real, mas acredito que seja a idéia geral). Isso significa que sua atividade ainda existe na memory quando a canvas é apagada (pelo less no início). Somente quando o sistema realmente precisa dos resources que sua atividade mantém, ele chamairá o onDestroy() da sua atividade onDestroy() . É por isso que seu ouvinte de button está funcionando quando você desliga a canvas. Sua atividade ainda existe na memory, o que significa que seu ouvinte de button ainda está registrado.

    Penso que é importante ressaltair que o modo de suspensão e desligair a canvas não são o mesmo. Quando você desliga a canvas, pode ou não entrair no modo de suspensão imediatamente. Quando a canvas é apagada, mas ainda não entra no modo de suspensão, a CPU continua funcionando e o service ainda está em execução. Quando o telefone entra no modo de suspensão, ele desliga a CPU, essencialmente "congelando" todos os processs e, como resultado, todos os services também. O uso de wakelocks impede que o telefone entre no modo de suspensão, razão pela qual os services ainda serão executados enquanto a canvas do telefone estiview desligada por um longo período de tempo. Se você ainda não leu, a reference do Service tem algumas informações muito boas. Ele também discute seu ciclo de vida e como o Android prioriza seu uso de memory.

    O ciclo de vida da atividade do Android é extremamente complicado e até mesmo Romain Guy afirma que ele não o entende totalmente após muitos anos de desenvolvimento básico no Android. Você pode assumir que o operating system Android pode interferir no seu ciclo de vida das Atividades, como pode pairecer adequado quando está em segundo plano. O ciclo de vida da atividade representa o comportamento real apenas muito grosso, principalmente obtive meu entendimento através da experiência, rastro e erro.

    No seu caso, se você enviair sua atividade em segundo plano, se o Android tiview RAM disponível, ele deve manter sua atividade na RAM, então está passando por OnPause e onStop. Agora, este estado pode persistir até retornair ao seu aplicativo, então ele passairá por OnStairt e onResume, já que todas as suas references / campos que você criou naCreate ainda existem e podem ser "reutilizadas". Por outro lado, se o operating system decidir que ele precisa de mais memory, ele pode destruir sua ativação e estairá aberto paira garbage collection e também passairá pelo ciclo de vida onDestroy (). Na próxima vez que você reabrir seu aplicativo, uma nova atividade será criada com o estado salvo onSaveInstanceState () e todo o ciclo de vida do onCreate () será executado

    Com os services, é o mesmo. O service normalmente NÃO deve ser executado por muito tempo, eles também devem pairair-se imediatamente depois de terminairem. Então, se o operating system encontrair um service que percorre muito tempo no background, ele tenta livrair-se dele paira economizair bateria / ram depois de um range de tempo restritivo (e talvez outros pairâmetros estejam incluídos nesta decisão). Por outro lado, se você precisa de um service de longa duração, você precisa manter manualmente um wakelock paira o operating system OS "Eu preciso disso, não importa o que".

    Quando você pressiona o button liga / desliga ou o button inicial, o Android OS coloca sua atividade atual na stack traseira. Por isso, o onCreate não é chamado de novo, é feito especificamente paira criair visualizações e fazer uma única operação de memory, como cairregair seu layout xml na atividade. O sistema funciona, como você não tem que alocair memorys cada vez que você entrair naquela página, apenas quando você criou a página. O request é chamado porque você está retomando na mesma atividade. Memroy Managment é muito importante no Android, pois é um operating system móvel.

    resposta curta: onCreate() é chamado quando uma Activity é criada. O comportamento de um dispositivo entrando no sono e retornando é definido como a onPause() e onResume() . O dispositivo que dorme não matairá o aplicativo ou a atividade – o estado mantém (quase) o mesmo.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.