Ciclo de vida do aplicativo (aplicativos do Tempo de Execução do Windows)

Applies to Windows and Windows Phone

Esse tópico descreve o ciclo de vida de um aplicativo, a partir do momento em que ele é implantado por meio de sua remoção. Ao suspender e retomar seu aplicativo de forma apropriada, você assegura que o cliente tenha a melhor experiência possível em seu aplicativo.

Estado de execução do aplicativo

Esta ilustração representa as transições entre os estados de execução do aplicativo. As inúmeras seções a seguir deste tópico descrevem esses estados e eventos. Para obter mais detalhes sobre quando cada transição de estado ocorre e o que o aplicativo deve fazer em resposta, veja os documentos sobre a enumeração de ApplicationExecutionState.

Diagrama de estado que mostra transições entre estados de execução do aplicativo

Inicialização do aplicativo

Um aplicativo é iniciado sempre que ele for ativado pelo usuário, enquanto o processo estiver no estado NotRunning. Um aplicativo pode estar no estado de não execução porque ainda não foi aberto, porque estava em execução e travou, ou foi suspenso, mas não pôde ficar na memória e portanto foi encerrado.

Quando um aplicativo é iniciado, o SO exibe uma tela inicial do aplicativo. Para configurar essa tela inicial, veja Adicionando uma tela inicial.

Enquanto a tela inicial é exibida, o aplicativo deve garantir que está pronto para que a interface do usuário seja exibida para o usuário. As principais tarefas do aplicativo são registrar os manipuladores de eventos e configurar qualquer interface do usuário necessária para o aplicativo ser carregado. Essas tarefas só devem levar alguns segundos. Se um aplicativo precisar solicitar dados da rede ou recuperar grandes quantidades de dados do disco, essas atividades deverão ser concluídas fora da ativação. Um aplicativo pode usar sua própria interface do usuário de carregamento personalizada ou uma tela inicial estendida enquanto aguarda a conclusão dessas operações de longa execução. Veja a documentação da Tela Inicial Estendida e o exemplo de tela inicial para obter mais detalhes. Após a conclusão da ativação do aplicativo, ele entra no estado Running e a tela inicial é subdividida. Mostrar uma janela, voltar do manipulador de ativação e concluir um adiamento são formas específicas pelas quais um aplicativo conclui a ativação. Para saber mais, veja:

Ativação do aplicativo

Um aplicativo pode ser ativado pelo usuário por meio de uma variedade de contratos e extensões. Para participar na ativação, seu aplicativo deve ser registrado para receber o evento Activated | activated. O manipulador de eventos de ativação de aplicativo pode testar para verificar porque ele foi ativado e se ele já estava no estado Running. Os aplicativos podem ser ativados conforme a seguir.

Tipo de ativaçãoDescrição
arquivo em cacheO usuário deseja salvar um arquivo para o qual seu aplicativo fornece gerenciamento de conteúdo.
câmeraO usuário deseja capturar fotos ou vídeo por uma câmera conectada.
seletor de contatosO usuário deseja selecionar contatos.
dispositivoO usuário deseja que o aplicativo manipule a Reprodução Automática.
arquivoUm aplicativo de usuário iniciou um arquivo cujo tipo de arquivo seu aplicativo está registrado para manipular.
seletor de abertura de arquivosO usuário deseja separar arquivos ou pastas que são fornecidos pelo seu aplicativo.
seletor de salvamento de arquivosO usuário deseja salvar um arquivo e selecionou o aplicativo.
inicializaçãoO usuário iniciou o aplicativo ou tocou em um bloco de conteúdo.
tarefa de impressãoO usuário deseja que o aplicativo manipule as tarefas de impressão.
protocoloUm aplicativo de usuário iniciou uma URL cujo protocolo seu aplicativo está registrado para manipular.
pesquisarO usuário deseja pesquisar com o aplicativo.
compartilhar destinoO usuário deseja que seu aplicativo seja o destino de uma operação de compartilhamento.

 

Aplicativos criados para o Windows 8.1 ou versões posteriores também podem ser ativados com estes tipos.

Activation type Descrição
adicionar compromissoO usuário deseja adicionar um compromisso ao calendário. Também suportado no Windows Phone.
remover compromissoO usuário deseja remover um compromisso do calendário. Também suportado no Windows Phone.
substituir compromissoO usuário deseja substituir um compromisso do calendário. Também suportado no Windows Phone.
mostrar período de tempoO usuário deseja mostrar um período de tempo específico no calendário. Também suportado no Windows Phone.
chamada a contatoO usuário deseja fazer uma chamada a um contato.
mapa de contatosO usuário deseja mapear (obter a localização de) um contato.
mensagem a contatoO usuário deseja enviar uma mensagem a um contato.
postagem de contatoO usuário deseja postar um contato.
chamada de vídeo a contatoO usuário deseja fazer uma chamada de vídeo a um contato.
chamada da tela de bloqueioO usuário deseja aceitar uma chamada da tela de bloqueio.
inicialização restritaO usuário inicializou seu aplicativo restrito.

 

Os aplicativos do Windows Phone podem ser ativados com esses tipos.

Activation type Descrição
VoiceCommand O aplicativo foi ativado conforme o resultado de um comando de voz.
PickerReturned O aplicativo foi ativado após a conclusão de um seletor.
WalletAction O aplicativo foi ativado para executar uma operação de Carteira.
PickFileContinuation O aplicativo foi ativado após o aplicativo ter sido suspenso por uma operação do seletor de arquivos.
PickSaveFileContinuation O aplicativo foi ativado após o aplicativo ter sido suspenso por uma operação do seletor de salvamento de arquivos.
PickFolderContinuation O aplicativo foi ativado após o aplicativo ter sido suspenso por uma operação do seletor de pastas.
WebAuthenticationBrokerContinuation O aplicativo foi ativado após o aplicativo ter sido suspenso por uma operação do agente de autenticação da Web.

 

O aplicativo pode usar a ativação para restaurar os dados salvos anteriormente no caso de o sistema operacional finalizar o aplicativo e, posteriormente, o usuário o reiniciar. O sistema operacional pode encerrar o aplicativo depois de o ter suspendido por vários motivos. O usuário pode fechar manualmente seu aplicativo, ou sair, ou o sistema pode estar sendo executado com poucos recursos. Se o usuário iniciar o aplicativo depois de ele ter sido encerrado pelo sistema operacional, receberá um evento activated e visualizará uma tela inicial do aplicativo até que ele seja ativado. Você pode usar esse evento para determinar se o aplicativo precisa restaurar os dados que ele salvou na última vez em que foi suspenso ou se você deve carregar os dados padrão do aplicativo. Os argumentos do evento activated incluem uma propriedade PreviousExecutionState que informa o estado do aplicativo antes dele ter sido ativado. Essa propriedade é um dos valores da enumeração de ApplicationExecutionState. A tabela abaixo resume as possibilidades:

Motivo do encerramentoValor da propriedade PreviousExecutionStateAção a ser tomada
Terminado pelo sistema (por exemplo, devido a restrições de recursos)Encerrado Restaurar dados da sessão
Fechado pelo usuárioClosedByUser Iniciar com dados padrão
Encerrado inesperadamente ou o aplicativo não foi executado desde o início da sessão do usuário NotRunningIniciar com dados padrão

 

PreviousExecutionState também poderia ter um valor de Execução ou Suspenso, mas nesses casos o aplicativo não foi encerrado anteriormente e, portanto, você não precisa se preocupar sobre como restaurar dados.

  • Applies to Windows

Observação  

Se você entrar usando a conta de Administrador do computador, observe que não poderá ativar nenhum aplicativo da Windows Store.

Para saber mais, veja Extensões de aplicativos.

Suspensão de aplicativo

Um aplicativo pode ser suspenso quando o usuário alterna para outro aplicativo ou quando o dispositivo entra em um estado de baixo consumo de energia. A maioria dos aplicativos para de funcionar quando o usuário alterna para outro aplicativo.

Quando o usuário move um aplicativo para segundo plano, o sistema operacional aguarda alguns segundos para ver se o usuário volta imediatamente ao aplicativo. Se o usuário não voltar, o sistema operacional suspenderá o aplicativo.

Se um aplicativo tiver registrado um manipulador de eventos para o evento Suspending | suspending, esse manipulador de eventos será chamado logo antes do aplicativo ser suspenso. Você pode usar o manipulador de eventos para salvar dados relevantes do aplicativo e do usuário em armazenamento persistente. Recomendamos que você use as APIs de dados do aplicativo para essa finalidade, pois isso garantirá a conclusão antes do aplicativo entrar na estado Suspended. Para saber mais, veja Dados do aplicativo. Você também deve liberar os recursos e identificadores de arquivo exclusivos para que os outros aplicativos tenham acesso a eles quando o seu aplicativo não está os usando.

Normalmente, seu aplicativo deverá salvar o estado e liberar os recursos e identificadores de arquivo exclusivos imediatamente no manipulador de eventos quando o evento de suspensão for recebido e, normalmente, leva um segundo para fazê-lo. Se um aplicativo não retornar do evento de suspensão em 5 segundos no Windows e entre 1 e 10 segundos no Windows Phone, o sistema operacional presume que o aplicativo parou de responder e foi encerrado.

O sistema operacional tenta manter tantos aplicativos suspensos na memória quantos forem possíveis. Manter esses aplicativos na memória assegura que os usuários possam alternar entre aplicativos suspensos de forma rápida e confiável. No entanto, se não houver recursos suficientes para manter um aplicativo na memória, o sistema operacional poderá encerrá-lo. Observe que os aplicativos não recebem notificações de que estão sendo encerrados. Sendo assim, a única oportunidade que você tem para salvar os dados do aplicativo é durante a suspensão. Quando um aplicativo determina que está ativado depois de ter sido encerrado, você deve carregar os dados do aplicativo salvos durante a suspensão para que o aplicativo apareça como quando estava suspenso.

Há alguns aplicativos que precisam continuar a serem executados para concluir as tarefas em segundo plano. Seu aplicativo pode continuar reproduzindo áudio em segundo plano. Para saber mais, veja Guia de início rápido: adicionando áudio a um aplicativo do Tempo de Execução do Windows. As operações de transferência em segundo plano continuam mesmo se o seu aplicativo estiver suspenso ou for encerrado. Para saber mais, veja Guia de início rápido: baixando um arquivo.

Para obter diretrizes, consulte Diretrizes de suspensão e retomada de aplicativos.

Para um exemplo de código, veja:

Visibilidade do aplicativo

Quando o usuário alterna do seu aplicativo para outro aplicativo, o aplicativo não fica mais visível, mas permanece no estado de execução até que o sistema operacional possa suspendê-lo (aproximadamente 10 segundos). Se o usuário alternar para outro aplicativo, mas ativar ou voltar para ele antes que seja suspenso, ele permanecerá no estado de execução.

Seu aplicativo não recebe um evento de ativação quando a visibilidade do aplicativo for alterada, porque o aplicativo ainda está em execução. O sistema operacional simplesmente alterna do aplicativo e para ele quando necessário. Se o aplicativo precisar fazer algo quando o usuário alterna para outro aplicativo e retorna, ele poderá manipular o eventoVisibilityChanged | msvisibilitychange.

O evento de visibilidade não é serializado com os eventos de continuação ou ativação. Não pense que esses eventos vêm em uma ordem específica.

Retomar aplicativo

Um aplicativo suspenso pode ser retomado quando o usuário alterna para ele ou quando o dispositivo sai de um estado de baixo consumo de energia.

Para obter uma enumeração dos estados nos quais seu aplicativo pode estar quando é retomado, veja ApplicationExecutionState. Quando um aplicativo é retomado do estado Suspended, ele entra no modo Running e continua de onde estava quando foi suspenso. Nenhum dado de aplicativo é perdido, porque ele foi armazenado na memória. Portanto, a maioria dos aplicativos não precisa fazer nada quando eles são retomados. No entanto, o aplicativo pôde ter ficado suspenso por horas ou mesmo dias. Assim, se o aplicativo tiver conteúdo ou conexões de rede que possam ter ficado obsoletos, eles precisam ser atualizados quando o aplicativo é retomado. Se um aplicativo registrou um manipulador de eventos para o evento Resuming | resuming, esse ele é chamado quando o aplicativo é retirado do estado Suspended. Você pode atualizar seu conteúdo usando esse manipulador de conteúdo.

Se um aplicativo suspenso for ativado para participar em uma extensão ou em um contrato do aplicativo, ele receberá o evento Resuming | resuming primeiro e, em seguida, o evento Activated | activated.

Quando um aplicativo é suspenso, ele não recebe os eventos de rede que está registrado para receber. Esses eventos não são colocados em fila, eles são simplesmente perdidos. Portanto, o aplicativo deverá testar o status de rede quando for retomado.

Para obter diretrizes, consulte Diretrizes de suspensão e retomada de aplicativos.

Para um exemplo de código, veja:

  • Applies to Windows Phone

Observação  No Windows Phone, OnLaunched é chamado cada vez que o usuário inicia o aplicativo no bloco Iniciar ou na lista de aplicativos, mesmo quando o aplicativo estiver atualmente suspenso na memória. No Windows, iniciar um aplicativo suspenso no bloco Iniciar ou na lista de aplicativos não chama esse método.

Fechamento do aplicativo

Geralmente, os usuários não precisam fechar os aplicativos, eles podem permitir que o sistema operacional os gerencie. No entanto, os usuários podem optar por fechar um aplicativo usando o gesto de fechar ou pressionando Alt + F4 no Windows ou usando o alternador de tarefas no Windows Phone. Você não pode incluir nenhuma interface do usuário em seu aplicativo para permitir que o usuário feche o aplicativo ou ele não passará no processo de certificação da Store.

Não há nenhum evento especial para indicar que o usuário tenha fechado um aplicativo.

Depois que um aplicativo for fechado pelo usuário, ele é suspenso e encerrado e, em seguida, entra no estado NotRunning em cerca de 10 segundos.

No Windows 8.1 e versões posteriores, depois que um aplicativo foi fechado pelo usuário, ele só é removido da tela e da lista de alternância, sem ser encerrado.

  • Applies to Windows

Observação  Se o seu aplicativo depende do comportamento "fechado pelo usuário" do Windows 8, você poderá habilitar esse comportamento nele quando atualizar para o Windows 8.1. Para habilitar o comportamento fechado pelo usuário do Windows 8, defina seu aplicativo do Windows 8.1 para ser encerrado quando a última janela for fechada com a propriedade Windows.UI.ViewManagement.ApplicationView.TerminateAppOnFinalViewClose.

Se um aplicativo tiver registrado um manipulador de eventos para o evento Suspending | suspending, ele será chamado quando o aplicativo for suspenso. Você pode usar esse manipulador de eventos para salvar dados relevantes do aplicativo e do usuário em armazenamento persistente.

Comportamento fechado pelo usuário:  Convém que você decida como o seu aplicativo se comporta quando é ativado depois de ser fechado pelo usuário. Pode não fazer diferença para o aplicativo se ele foi encerrado pelo sistema operacional ou pelo usuário. Se o aplicativo precisar fazer algo diferente quando for fechado pelo usuário do que quando for fechado pelo sistema operacional, você poderá usar o manipulador de eventos de ativação para determinar se o aplicativo foi fechado pelo usuário ou pelo sistema operacional. Veja as descrições dos estados ClosedByUser e Terminated nas documentações para obter a enumeração de ApplicationExecutionState.

Convém que os aplicativos não sejam fechados programaticamente, a menos que seja absolutamente necessário. Por exemplo, se um aplicativo detectar um vazamento de memória, ele pode se fechar para garantir a segurança dos dados pessoais do usuário. Quando você fecha um aplicativo de forma programática, o sistema operacional trata isso como uma falha de aplicativo.

Falha de aplicativo

Os aplicativos são obrigados a seguir a experiência de falha do sistema, que é simplesmente retornar à tela Inicial. A experiência de falha de sistema é projetada para colocar os usuários de volta no que eles estavam fazendo o mais rápido possível; então você não deve fornecer uma caixa de diálogo de aviso ou outra notificação porque isso causará um atraso para o usuário. O desaparecimento do aplicativo deveria tornar claro para o usuário que algo deu errado.

Se o aplicativo falhar, parar de responder ou gerar uma exceção, o Windows solicitará ao usuário o consentimento para enviar um relatório do problema para a Microsoft. A Microsoft fornece um subconjunto dos dados de erro no relatório de problema para você para que você possa usá-lo para melhorar o aplicativo. Você pode ver esses dados na página Qualidade do aplicativo no Painel do Centro de Desenvolvimento.

Quando o usuário ativa um aplicativo depois que ele falha, seu manipulador de eventos de ativação recebe um valor ApplicationExecutionState de NotRunning e deve exibir simplesmente sua interface do usuário e dados iniciais.

Remoção do aplicativo

Quando um usuário exclui seu aplicativo, ele é removido, juntamente com os dados locais. A remoção de um aplicativo não afeta os dados do usuário, como os arquivos nas bibliotecas de Documentos ou de Imagens.

Interfaces de programação de ciclo de vida de aplicativo

Tópicos relacionados

Diretrizes para suspender e retomar aplicativos
Exemplos
Aplicativo ativado, retomado e suspenso usando o exemplo WRL

 

 

Mostrar:
© 2014 Microsoft