Anúncio fechado

Ainda tem muita gente que não sabe como funciona a multitarefa no iOS. Para começar, porém, é preciso ressaltar que não se trata de uma verdadeira multitarefa, mas sim de uma solução muito inteligente que não sobrecarrega o sistema nem o usuário.

Muitas vezes pode-se ouvir superstições de que aplicativos executados em segundo plano no iOS preenchem a memória operacional, o que leva à lentidão do sistema e à vida útil da bateria, por isso o usuário deve desligá-los manualmente. Na verdade, a barra multitarefa não contém uma lista de todos os processos em execução em segundo plano, mas apenas os aplicativos iniciados mais recentemente. Assim, o usuário não precisa se preocupar com processos executados em segundo plano, exceto em alguns casos. Ao pressionar o botão Home, o aplicativo geralmente entra em suspensão ou fecha, de modo que não carrega mais o processador ou a bateria e, se necessário, libera a memória necessária.

Portanto, esta não é uma multitarefa completa quando você tem dezenas de processos em execução. Apenas um aplicativo está sempre em execução em primeiro plano, que é pausado ou desligado completamente, se necessário. Apenas alguns processos secundários são executados em segundo plano. É por isso que você raramente encontrará uma falha de aplicativo no iOS, por exemplo, o Android está sobrecarregado com a execução de aplicativos que o usuário precisa cuidar. Por um lado, isso torna o trabalho com o dispositivo desagradável e, por outro lado, causa, por exemplo, inicialização lenta e transições entre aplicativos.

Tipo de tempo de execução do aplicativo

O aplicativo no seu dispositivo iOS está em um destes 5 estados:

  • Correndo: o aplicativo é iniciado e executado em primeiro plano
  • Fundo: ele ainda está em execução, mas em segundo plano (podemos usar outros aplicativos)
  • Suspenso: Ainda usando RAM, mas não em execução
  • Inativo: o aplicativo está em execução, mas comandos indiretos (por exemplo, quando você bloqueia o dispositivo com o aplicativo em execução)
  • Não está em execução: O aplicativo foi encerrado ou não foi iniciado

A confusão surge quando o aplicativo entra em segundo plano para não atrapalhar. Quando você pressiona o botão Home ou usa o gesto para fechar o aplicativo (iPad), o aplicativo entra em segundo plano. A maioria dos aplicativos são suspensos em segundos (eles são armazenados na RAM do iDevice para que possam ser iniciados rapidamente, não carregam tanto o processador e, portanto, economizam bateria). Você pode pensar que, se um aplicativo continuar a usar memória, você terá excluí-lo manualmente para liberá-lo. Mas você não precisa fazer isso, porque o iOS fará isso por você. Se você tiver um aplicativo exigente suspenso em segundo plano, como um jogo que usa uma grande quantidade de RAM, o iOS irá removê-lo automaticamente da memória quando necessário, e você poderá reiniciá-lo tocando no ícone do aplicativo.

Nenhum desses estados é refletido na barra multitarefa, o painel mostra apenas uma lista de aplicativos lançados recentemente, independentemente de o aplicativo estar parado, pausado ou em execução em segundo plano. Você também pode notar que o aplicativo em execução no momento não aparece no painel Multitarefa

Tarefas em segundo plano

Normalmente, quando você pressiona o botão Home, o aplicativo é executado em segundo plano e, se você não o estiver usando, ele será pausado automaticamente em cinco segundos. Portanto, se você estiver baixando um podcast, por exemplo, o sistema o avalia como um aplicativo em execução e atrasa o encerramento em dez minutos. Após dez minutos, no máximo, o processo é liberado da memória. Resumindo, você não precisa se preocupar em interromper o download pressionando o botão Home, se não demorar mais de 10 minutos para concluí-lo.

Execução indefinida em segundo plano

No caso de inatividade, o sistema encerra o aplicativo em cinco segundos e, no caso de downloads, o encerramento é atrasado em dez minutos. No entanto, há um pequeno número de aplicativos que requerem execução em segundo plano. Aqui estão alguns exemplos de aplicativos que podem ser executados em segundo plano indefinidamente no iOS 5:

  • Aplicativos que reproduzem som e devem ser interrompidos por um tempo (pausar a música durante uma ligação, etc.),
  • Aplicativos que rastreiam sua localização (software de navegação),
  • Aplicativos que recebem chamadas VoIP, por exemplo, se você usa o Skype, você pode receber uma chamada mesmo quando o aplicativo está em segundo plano,
  • Downloads automáticos (por exemplo, Banca de jornal).

Todos os aplicativos deverão ser fechados se não estiverem mais executando uma tarefa (como downloads em segundo plano). No entanto, há exceções que são executadas continuamente em segundo plano, como o aplicativo Mail nativo. Se estiverem sendo executados em segundo plano, eles ocupam memória, uso da CPU ou reduzem a vida útil da bateria

Os aplicativos que podem ser executados em segundo plano indefinidamente podem fazer qualquer coisa enquanto estão em execução, desde reproduzir música até baixar novos episódios de podcast.

Como mencionei antes, o usuário nunca precisa fechar os aplicativos em execução em segundo plano. A única exceção a isso é quando um aplicativo em execução em segundo plano trava ou não sai do modo de espera corretamente. O usuário pode então fechar os aplicativos manualmente na barra multitarefa, mas isso raramente acontece.

Portanto, em geral, você não precisa gerenciar processos em segundo plano porque o próprio sistema cuidará deles. É por isso que o iOS é um sistema tão novo e rápido.

Da perspectiva de um desenvolvedor

O aplicativo pode reagir com um total de seis estados diferentes como parte da multitarefa:

1. aplicaçãoWillResignActive

Traduzido, esse estado significa que o aplicativo renunciará ao status de aplicativo ativo (ou seja, o aplicativo em primeiro plano) no futuro (em questão de alguns milissegundos). Isso acontece, por exemplo, ao receber uma chamada durante o uso do aplicativo, mas ao mesmo tempo, esse método também causa esse estado antes do aplicativo entrar em segundo plano, portanto, é necessário levar essas alterações em consideração. Este método também é adequado para, por exemplo, suspender todas as atividades que está realizando quando há uma chamada recebida e aguardar o término da chamada.

2. aplicaçãoDidEnterBackground

O status indica que o aplicativo ficou em segundo plano. Os desenvolvedores devem usar este método para suspender todos os processos que não precisam necessariamente ser executados em segundo plano e limpar a memória de dados não utilizados e outros processos, como expiração de temporizadores, limpeza de imagens carregadas da memória que não serão necessariamente necessárias ou fechamento conexões com servidores, a menos que seja crítico para o aplicativo concluir conexões em segundo plano. Quando o método é chamado no aplicativo, ele deve basicamente ser usado para suspender completamente o aplicativo se alguma parte dele não for necessária para ser executada em segundo plano.

3. aplicaçãoWillEnterForeground

Este estado é o oposto do primeiro estado, onde a aplicação renunciará ao estado ativo. O estado significa simplesmente que o aplicativo suspenso será retomado do plano de fundo e aparecerá em primeiro plano nos próximos milissegundos. os desenvolvedores devem usar esse método para retomar quaisquer processos que estavam inativos enquanto o aplicativo estava em segundo plano. As conexões com os servidores devem ser restabelecidas, os temporizadores redefinidos, as imagens e os dados carregados na memória e outros processos necessários podem ser retomados antes que o usuário veja o aplicativo carregado novamente.

4. aplicaçãoDidBecomeActive

O estado indica que o aplicativo acabou de se tornar ativo após ser restaurado para o primeiro plano. Este é um método que pode ser usado para fazer ajustes adicionais na interface do usuário ou para restaurar a UI ao seu estado original, etc. Na verdade, isso acontece no momento em que o usuário já vê o aplicativo no display, por isso é necessário determine com cautela o que acontece no método deste e no método anterior. Eles são chamados um após o outro com uma diferença de alguns milissegundos.

5. aplicaçãoWillTerminate

Esse estado acontece alguns milissegundos antes da saída do aplicativo, ou seja, antes de o aplicativo realmente terminar. Manualmente em multitarefa ou ao desligar o dispositivo. O método deve ser utilizado para salvar dados processados, encerrar todas as atividades e excluir dados que não serão mais necessários.

6. aplicaçãoDidReceiveMemoryWarning

É o último estado o mais discutido. Ele é responsável por, se necessário, remover o aplicativo da memória do iOS caso ele utilize recursos do sistema desnecessariamente. Não sei especificamente o que o iOS faz com aplicativos em segundo plano, mas se precisar de um aplicativo para liberar recursos para outros processos, ele avisa com um aviso de memória para liberar todos os recursos que possui. Portanto, esse método é chamado no aplicativo. Os desenvolvedores devem implementá-lo para que o aplicativo libere a memória alocada, salve tudo em andamento, limpe os dados desnecessários da memória e, de outra forma, libere memória de forma adequada. É verdade que muitos desenvolvedores, mesmo iniciantes, não pensam ou entendem essas coisas, e então pode acontecer que seu aplicativo ameace a vida da bateria e/ou consuma recursos do sistema desnecessariamente, mesmo em segundo plano.

veredito

Esses seis estados e seus métodos associados são o pano de fundo de toda “multitarefa” no iOS. é um ótimo sistema, desde que os desenvolvedores não ignorem o fato de que é necessário ser responsável pelo que o aplicativo exibe nos dispositivos de seus usuários, se eles são minimizados ou recebem avisos do sistema e assim por diante.

Zdroj: macworld.com

Autores: Jakub Požárek, Martin Doubek (ArnieX)

 
Você também tem um problema para resolver? Você precisa de conselhos ou talvez encontre o aplicativo certo? Não hesite em nos contatar através do formulário na seção Aconselhamento, da próxima vez responderemos sua pergunta.

.