Entendendo o ciclo de vida - App e ViewController

Andrew Castro
Aug 23, 2019 · 5 min read
Image for post
Image for post

Introdução

Os ciclos de vida do aplicativo e da ViewController (tela do app) são muito importantes durante o desenvolvimento, podendo ser pontos vitais para uma experiência agradável do usuário. Sendo assim, este artigo prevê explicar de maneira clara e precisa todos os pontos dos estados e métodos que o aplicativo e a ViewController utilizam.

Estado do aplicativo

Quando o aplicativo não está sendo executado

Image for post
Image for post

Quando o usuário clica no aplicativo, ele entra em foreground, no primeiro momento se mantém no estado inativo e posteriormente passa para ativo. Pode ocorrer de entrar em background, caso o usuário deseje sair do aplicativo, e em sequência entra no estado suspenso.

Se o usuário clicar no aplicativo novamente ele repete o loop.

Abertura do aplicativo

Image for post
Image for post
** Alguns pontos do gráfico são auto-explicativos, o foco será nas principais partes do ciclo. **

O método main() do iOS não é manipulado mas é executado quando o usuário abre o aplicativo, e na sequência, ele chama o UIApplicationMain().

A primeira inicialização é o estado inicial do aplicativo, onde é chamado o application willFinishLaunchinWithOptions. Esse método é onde o desenvolvedor tem a chance de executar alguma linha de código.

O recomendado, caso seja necessário executar algum código, é coloca-lo no proximo método, o didFinishLaunchinWithOption.

Após a ativação do aplicativo, ele fica em um loop de eventos.

O método applicationDidBecomeActive permite que o aplicativo saiba que ele está prestes a entrar em foreground. Pode ser usado para fazer uma preparação final.

Mudou para o aplicativo

Image for post
Image for post
** Alguns pontos do gráfico são auto-explicativos, o foco será nas principais partes do ciclo. **

O aplicativo entra em estado de background e é “acordado”. O método applicationWillEnterForeground é chamado e depois o aplicativo entra em modo foreground, onde já é possível ser utilizado pelo usuário, e o
applicationDidBecomeActive é chamado.

Mudança para um aplicativo diferente

Image for post
Image for post
** Alguns pontos do gráfico são auto-explicativos, o foco será nas principais partes do ciclo. **

O método applicationWillResignActive informa que o aplicativo está fazendo a transição de foreground para background. Ao entrar no método applicationDidEnterBackground o aplicativo está rodando em background e pode ficar inativo a qualquer momento.

Posteriormente são executadas as validações e o aplicativo entra no estado suspenso, caso ele não possa executar métodos em background.
Se houver um caso de falta de memória, o sistema irá encerrar o aplicativo.

Um método que não foi citado no ciclo de vida e que vale a pena ser comentado é o applicationWillTerminate que informa quando o aplicativo está prestes a terminar.

Ciclo de vida da ViewController

Image for post
Image for post

O fluxo pode levar como exemplo o momento em que a View será exibida para o usuário, ela não está visível na tela e será solicitada para aparecer. Se a view não foi apresentada, não foi carregada em memória, o método loadView será responsável por fazer o carregamento da View, logo após é enviado para a controller o método viewDidLoad, o que significa que a View já foi carregada.

O método viewWillAppear é o responsável por dizer que a View vai aparecer, sendo chamado antes da ViewController ser adicionada a hierarquia das Views. Ao aparecer é disparado o método viewDidAppear, sendo assim a View já está visível na tela.

Se o aplicativo estiver consumindo muita memória, o sistema irá avisar através do método didReceiveMemoryWarning. O ideal é liberar memória caso isso ocorra para o aplicativo não entrar no estado suspenso.

O método viewWillDisappear é chamado quando a view é removida da hierarquia das Views, quando ela vai sumir da tela (um caso é o usuário está em uma tela e vai para outra tela do aplicativo). Quando essa nova View estiver na tela o método viewDidDisappear é acionado.

Caso o usuário faça um fluxo de acessar uma tela pela primeira vez (viewDidLoad associado) e for para uma segunda tela e voltar novamente para a anterior, nesse caso a view já existia, então o fluxo que passa pelo loadView e viewDidLoad não será acionado, sendo assim o método viewWillAppear será o primeiro a ser chamado.

Conclusão

Entender os dois ciclos de vida irá possibilitar o máximo aproveitamento do que é oferecido, deixando o aplicativo a ser desenvolvido (ou que já esteja em desenvolvimento) melhor, tornando a experiência do usuário bem mais agradável.

Meu nome é Andrew Castro, sou Desenvolvedor iOS e busco sempre aprender e compartilhar conhecimento com todos. Sou da filosofia que você deve fazer tudo por paixão e diversão.

Caso tenha alguma dúvida, é só comentar comentários ou entrar em contato por aqui. Abraço!

Image for post
Image for post

A Mobicare e a Akross combinam os Melhores Talentos, Tecnologias de Ponta, Práticas Agile e DevOps com Capacidades Operacionais avançadas para ajudar Operadoras Telecom e grandes empresas a gerarem novas receitas e a melhorarem a experiência dos seus próprios clientes.

Se você gosta de inovar, trabalhar com tecnologia de ponta e está sempre buscando conhecimento, somos um match perfeito!

Faça parte do nosso time. 😉

mobicareofficial

Se você gosta de inovar, trabalhar com tecnologia de ponta…

Andrew Castro

Written by

iOS Developer For Fun

mobicareofficial

Se você gosta de inovar, trabalhar com tecnologia de ponta e está sempre buscando conhecimento, somos um match perfeito! Vem trabalhar com a gente 😉 bit.ly/mobicarreiras

Andrew Castro

Written by

iOS Developer For Fun

mobicareofficial

Se você gosta de inovar, trabalhar com tecnologia de ponta e está sempre buscando conhecimento, somos um match perfeito! Vem trabalhar com a gente 😉 bit.ly/mobicarreiras

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store