Esse post faz parte de uma série: o que aprendi com a programação, e tudo começou no dia 1
Entender o ciclo de vida de uma aplicação de software, é essencial para o desenvolvedor compreender como criar seus programas para a tecnologia desejada. Cada linguagem pode ter sua própria variação destes comportamentos, que chamamos de ciclo de vida do software. Neste post, vou mostrar minha percepção para aplicações em Javascript e o que eu aprendi com isso.
Ouça o podcast 6 (carinhosamente chamado de
Carcast), para contextualiza-lo melhor sobre o tema deste post.
De forma genérica, de acordo com Wikipédia, o ciclo de vida pode ser definido:
"... o conjunto de transformações que podem passar os indivíduos de uma espécie para assegurar a sua continuidade." (fonte)
Para um aplicativo, podemos considerar o ciclo de vida sendo uma abstração do conceito anterior, porém voltado para software. Portanto, teríamos uma definição:
"... um conceito fundamental do processo de Engenharia de Sistemas, ... onde se desenrolam todas as fases de desenvolvimento de sistemas artificiais, ou sistemas feito pelo homem, desde a concepção até a sua eliminação." (fonte)
De forma simples, o ciclo de vida do software é onde a execução do programa começa até chegar ao seu fim. Ou seja, o programa "tem vida", quando ele é alocado na memória RAM do dispositivo, e ele "morre", quando o mesmo é removido da memória. Este processo deve estar claro para você. Por exemplo, em Java temos a codificação do método main(), que representa o ponto de início e fim ao mesmo tempo.
Já em Android, embora utilizamos a linguagem Java, temos a classe Activity que define alguns métodos que trabalham em conjunto para fornecer um ciclo de vida (onCreate, onStart, onResume, onStop, onPause e onDestroy).
Veja aqui para detalhes.
Inclusive já abordei aqui um post relacionado com ciclo de vida no Android: [
Mudanças de perspectivas em aplicações Android: evite recriar a Activity]
O ciclo de vida em Javascript
Tudo começa quando o Browser carrega a página HTML. Se ela tiver declarado um bloco ou arquivo Javascript, então sabemos que a página foi carregada, portanto, foi criada. Assim, o ciclo de vida foi iniciado. Mas como saber se aplicação relacionada está "morta"?
Essa é a questão chave. Existem algumas formas de saber. Uma delas é tentar monitorar os eventos que ocorrem sobre a tela HTML no Browser, e caso algum evento de transição de tela ocorrer ou algumas ações na janela do navegador, tal com a operação de minimizada a tela, podemos inferir que alguma coisa ocorreu com a tela atual, podendo assim, deduzir chamadas para o ciclo de vida.
Uma alternativa que usamos aqui é representar uma estrutura de código que cheque quando os eventos da tela HTML ocorrerem, e assim, podemos inferir o ciclo de vida básico: INICIAR, PAUSAR, MORRER.
O exemplo acima demonstra um trecho de código Javascript no qual pode-se conferir o uso deste método. Vale notar que talvez Browser que não seja o Chrome pode não funcionar. Para testar abra uma aba nova e retorne ao exemplo.
Aprendi com essa experiência que podemos simular um ciclo de vida em aplicações Web que utilizam linguagem Javascript. Porém, existem limitações e nem todos os navegadores suportam o código acima.
Uma sugestão seria usar um bloco:
var doc = window.document;
if (doc.hidden || doc.msHidden || doc.webkitHidden) {
// possui a propriedade de visibilidade compatível com vários navegadores
}