O que eu devo fazer quando o processamento normal do meu aplicativo iOS é interrompido?
Em um dispositivo iOS, vários eventos além de terminação pode interromper seu aplicativo para permitir que o usuário para responder e sua aplicação se move para o estado inativo. Se o usuário optar por ignorar uma interrupção, a sua aplicação se move de volta para o estado ativo e continua a funcionar como antes. Se o usuário decide explorar o alerta, a sua aplicação, em seguida, move-se para a sua estado fundo, onde ele está suspenso, mas permanece na memória.
iOS lhe envia uma série de mensagens para que você saiba exatamente o que está acontecendo, bem como dar-lhe a oportunidade de tomar ações, como salvar os dados do usuário e informações de estado, o que significa salvar o ponto onde o usuário estava no aplicativo. Porque o aplicativo está no fundo e ainda na memória, relançamento é quase instantânea.
objetos de um aplicativo permanecerão na memória, para que eles não precisam ser recriados quando o aplicativo relança. Se a memória torna-se restrita, iOS pode purgar aplicações em segundo plano para dar mais espaço para o aplicativo de primeiro plano.
Porque essas interrupções causar uma perda temporária do controlo pelo seu aplicativo, eventos de toque já não são enviados para seu aplicativo.
A sequência de eventos começa sempre da mesma forma - com o applicationWillResignActive: mensagem enviada ao delegado do aplicativo quando o aplicativo está prestes a mover-se de ativo para estado inativo. Neste método, você deve pausar as tarefas em curso, desative temporizadores, acelerador para baixo as taxas de frame OpenGL ES, e, geralmente, colocar as coisas em espera.
O que acontece depois de este depende de a) a natureza da interrupção, e b) como o utilizador responde à interrupção. Seu aplicativo pode ser movido para o segundo plano ou reativados.
Se o usuário responde à interrupção ou lançou outro aplicativo, o aplicativo é movido para o fundo.
As próximas duas balas explicar as mensagens de seu aplicativo pode responder a depois de ter sido transferida para o segundo plano:
o applicationDidEnterBackground: mensagem: Quando seu primeiro aplicativo entra no estado de fundo, ele é enviado ao applicationDidEnterBackground:mensagem. Neste método, você deve salvar os dados não salvos ou Estado (O ponto de vista atual, as opções selecionadas, e coisas assim) em um arquivo de cache temporário ou para o banco de dados preferências no disco.
Mesmo que a sua aplicação entra no estado de fundo, você não tem nenhuma garantia de que vai permanecer lá indefinidamente. Se a memória torna-se restrita, iOS irá limpar os aplicativos de fundo para dar mais espaço para o aplicativo de primeiro plano. Você precisa fazer tudo o necessário para ser capaz de restaurar a sua aplicação no caso ele é posteriormente removidos da memória.
Se seu aplicativo é eliminado quando se está neste estado suspenso, ele não recebe nenhum aviso de que ele é removido da memória. É por isso que você precisa para salvar todos os dados quando receber a applicationDidEnterBackground:mensagem.
Quando o delegado é enviado ao applicationDidEnterBackground:método, a sua aplicação tem uma quantidade não documentada de tempo para terminar as coisas. Se o applicationDidEnterBackground:método não retornar antes do tempo acabar (ou se o seu aplicativo não solicitar mais tempo de execução do iOS), sua aplicação é encerrada e excluídos da memória.
Se seu aplicativo requer mais tempo de execução ou tiver declarado que ele faz a execução de fundo, ele é autorizado a continuar a correr após o applicationDidEnterBackground:método retorna. Se não, seu (agora) aplicação de fundo é movido para a suspenso Estado logo após o retorno do applicationDidEnterBackground:método.
Se o aplicativo está em segundo plano, então ele pode ser relançado. Isso pode acontecer se o usuário seleciona o aplicativo a partir da tela inicial ou na barra de multitarefa, ou é lançada pelo sistema se o aplicativo processa eventos em segundo plano ou monitora uma mudança de localização significativa, por exemplo.
o applicationWillEnterForeground: mensagem: Quando seu aplicativo é relançada a partir do fundo, ele é enviado ao applicationWillEnterForeground:mensagem. Neste método, você precisa para desfazer o que você fez no applicationDidEnterBackground: método.
Se o usuário ignora a mensagem SMS, ou a aplicação é relançada a partir do fundo, a sua aplicação é reativado e começa a ficar sensível ao toque e outros eventos.
Quando seu aplicativo for reativado, ele é enviado ao applicationDidBecomeActive: mensagem.
Você pode usar o applicationDidBecomeActive:método para restaurar o aplicativo para o estado em que estava antes da interrupção. Aqui você desfazer o que você fez no applicationWillResignActive método, tais como reiniciar as tarefas que foram pausados (ou ainda não iniciados), enquanto o aplicativo estava inativo. Se o aplicativo estava anteriormente no fundo, talvez seja necessário atualizar a interface do usuário.
Enquanto um aplicativo está no estado de suspensão, o sistema rastreia e aglutina (realmente netsout) eventos que possam ter um impacto sobre esse aplicativo quando relança. Assim que o aplicativo é instalado e funcionando novamente, o sistema proporciona esses eventos para ele. Para a maioria desses eventos, infra-estrutura existente da sua aplicação deve apenas responder apropriadamente.
Apps são geralmente mudou-se para segundo plano quando interrompido. Mas se o aplicativo foi compilado com uma versão muito inicial do SDK, ou está sendo executado em uma versão inicial do sistema operacional que não suporta multitarefa - ou se você decidir que você não quer que seu aplicativo para executar em segundo plano e você definir o UIApplicationExitsOnSuspend -chave na sua Info.plist arquivo - iOS termina seu aplicativo.
Mesmo se o seu aplicativo oferece suporte a multitarefa, você ainda deve estar preparado para o seu aplicativo para ser morto sem qualquer notificação. O usuário pode matar aplicativos explicitamente usando a barra de multitarefa. Além disso, se a memória torna-se restrita, o sistema pode remover aplicativos da memória para dar mais espaço. Se isso não remover o seu suspenso app, ele não lhe dar qualquer aviso!
Quando o delegado pedido é enviado a applicationWillTerminate: mensagem nonmultitasking aplicações, ou aqueles em execução em segundo plano, você precisa fazer os mesmos tipos de coisas que você faz em applicationDidEnterBackground:, só que desta vez você fazê-las saber que a sua aplicação não será o retorno do fundo.
Seu applicationWillTerminate: implementação do método tem uma quantidade limitada de tempo para fazer o que precisa fazer e voltar. Qualquer mais do que isso e seu aplicativo é encerrado e excluídos da memória.