Compartilhar via


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

Como ativar um aplicativo

Como retomar um aplicativo

Conceitual

Ciclo de vida do aplicativo

Diretrizes

Diretrizes para suspensão e reinício de um aplicativo

Referência

WinJS.Application.checkpoint

WinJS.Application.sessionState