Como suspender um aplicativo (HTML)
[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente]
Saiba como salvar dados de aplicativo importantes quando o sistema suspende o seu aplicativo do Tempo de Execução do Windows. Quando o aplicativo é suspenso pelo sistema, ele pode ser encerrado posteriormente sem aviso. É importante salvar o estado atual do usuário no aplicativo para que quando ele for reiniciado você possa restaurar esse estado. O usuário nunca deve saber que o aplicativo foi suspenso e foi encerrado em segundo plano.
As etapas a seguir mostrarão como se registrar para o evento checkpoint e usá-lo para salvar algum estado básico do aplicativo.
Instruções
Etapa 1: Registrar-se para o evento de ponto de verificação
Registre-se para o evento checkpoint no escopo global. Esse evento indica que o aplicativo está sendo suspenso pelo sistema. Depois que o aplicativo é suspenso, ele pode ser terminado pelo sistema para liberar recursos do sistema. Por causa disso, é importante salvar os dados do aplicativo durante o evento de ponto de verificação.
var app = WinJS.Application;
app.addEventListener("checkpoint", checkpointHandler);
Etapa 2: Salvar os dados do aplicativo antes da suspensão
Quando o aplicativo manipula o evento checkpoint, ele tem a oportunidade de salvar os dados importantes do aplicativo na função do manipulador para o evento checkpoint. O aplicativo pode usar o objeto sessionState para salvar dados simples do aplicativo de forma assíncrona. O objeto sessionState mantém os dados de forma que o aplicativo possa acessá-los durante a ativação após o término.
function checkpointHandler(eventArgs)
{
var stateObject = new Object();
// TODO: Populate the state object with app data
// Save the state object to the session object
app.sessionState.stateObject = stateObject;
}
Etapa 3: Liberar manipuladores de recursos e arquivos exclusivos
Quando seu aplicativo manipula o evento checkpoint, ele também tem a oportunidade de liberar indicadores de arquivos e recursos exclusivos. Exemplos de recursos exclusivos são câmeras, dispositivos de E/S, dispositivos externos e recursos de rede. Liberar explicitamente os indicadores de arquivos e recursos exclusivos ajuda a garantir que outros aplicativos possam acessá-los quando não estiverem sendo usados pelo seu aplicativo. Quando o aplicativo for ativado após o encerramento, ele deverá abrir seus indicadores de arquivos e recursos exclusivos.
Comentários
O sistema suspende o aplicativo quando o usuário alterna para outro aplicativo ou área de trabalho. O sistema retoma o seu aplicativo sempre que o usuário alterna de volta para ele. Quando o sistema retoma o aplicativo, o conteúdo das variáveis e estruturas de dados é o mesmo de antes da suspensão do aplicativo pelo sistema. O sistema retoma o aplicativo exatamente de onde parou, o que faz parecer ao usuário que ele estava sendo executado em tela de fundo.
O sistema tenta manter o aplicativo e seus dados na memória enquanto está suspenso. Entretanto, o sistema operacional pode encerrar o aplicativo por inúmeros motivos depois que ele é suspenso. Alguns exemplos de quando isso pode acontecer são: o usuário fecha manualmente o aplicativo, o usuário faz logout ou o sistema está com poucos recursos. Quando o usuário volta para um aplicativo que foi encerrado, o aplicativo recebe um evento activated e deve verificar se os objetos sessionState estão definidos. Quando os objetos estão definidos, o aplicativo deve carregar os dados.
O sistema não notifica um aplicativo sobre seu encerramento, então o aplicativo deve salvar os dados e liberar os manipuladores de recursos e arquivos exclusivos ao ser suspenso, e restaurá-los ao ser retomado após a suspensão ou ativado após o encerramento.
Observação Se você precisar executar um trabalho assíncrono quando o aplicativo estiver sendo suspenso, precisará adiar a conclusão da suspensão até que o trabalho seja concluído. Você pode usar o método setPromise na propriedade de detalhes do argumento do evento checkpoint para atrasar a conclusão da suspensão até depois que você cumprir a promessa.
Observação Para melhorar a capacidade de resposta do sistema no Windows 8.1 e no Windows Phone, os aplicativos recebem acesso de prioridade baixa aos recursos depois da suspensão. Para dar suporte a essa nova prioridade, o tempo limite da operação de suspensão é estendido para que o aplicativo tenha o equivalente do tempo limite de 5 segundos para prioridade normal no Windows ou entre 1 e 10 segundos no Windows Phone. Você não pode estender ou alterar esse período de tempo limite.
Uma observação sobre a depuração que usa o Microsoft Visual Studio: O Visual Studio impede que o Windows suspenda um aplicativo que está anexado ao depurador. Isso serve para permitir que o usuário exiba a interface do usuário de depuração do Visual Studio enquanto o aplicativo é executado. Quando você está depurando um aplicativo, é possível enviar a ele um evento de suspensão usando o Visual Studio. Verifique se a barra de ferramentas Local da Depuração está sendo mostrada e clique no ícone Suspender.
Exemplo completo
Veja o Exemplo de ativação e suspensão de aplicativo usando WinJS e o Exemplo de ativação, retomada e suspensão de aplicativo usando WRL para obter exemplos de código completos que mostram como manipular eventos de ciclo de vida do aplicativo.
Tópicos relacionados
Tarefas
Conceitual
Diretrizes
Diretrizes para suspensão e reinício de um aplicativo
Referência