Como executar uma tarefa em segundo plano em um temporizador (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]
Aprenda como agendar uma tarefa ocasional em segundo plano ou executar uma tarefa periódica em segundo plano associada ao seu aplicativo da Windows Store. Se o usuário colocar seu aplicativo na tela de bloqueio, o aplicativo poderá registrar uma tarefa em segundo plano para ser executada a cada no máximo 15 minutos no Windows e cada 30 minutos no Windows Phone. Por exemplo, é possível usar uma tarefa em segundo plano para fornecer atualizações periódicas de blocos ou selos.
O que você precisa saber
Tecnologias
Pré-requisitos
- Este exemplo pressupõe que você tenha uma tarefa em segundo plano que precise ser executada periodicamente ou em um momento específico para que o aplicativo funcione corretamente. No Windows, uma tarefa em segundo plano executa somente usando um TimeTrigger se você tiver solicitado que seu aplicativo seja colocado em tela de bloqueio com uma chamada para RequestAccessAsync e o usuário aceitar o prompt. No Windows Phone, você deve chamar RequestAccessAsync, mas não há prompt ao usuário. Para saber mais, veja Exibindo blocos na tela de bloqueio.
- Este tópico pressupõe que você já tenha criado uma classe de tarefa em segundo plano, incluindo o método Run que é usado como o ponto de entrada da tarefa em segundo plano. Para começar a criar rapidamente uma tarefa em segundo plano, veja Início rápido: criar e registrar uma tarefa em segundo plano. Para obter informações mais detalhadas sobre condições e gatilhos, veja Oferecer suporte ao seu aplicativo com tarefas em segundo plano.
Instruções
Etapa 1: Criar um gatilho de tempo
Crie um novo TimeTrigger. O segundo parâmetro, OneShot, especifica se a tarefa em segundo plano será executada uma única vez ou periodicamente. Se OneShot for definido como verdadeiro, o primeiro parâmetro (FreshnessTime) especificará o número de minutos aguardados até que a tarefa em segundo plano seja agendada. Se OneShot for definido como falso, FreshnessTime especificará a frequência com que a tarefa em segundo plano será executada.
O Windows 8 conta com um temporizador interno que executa tarefas em segundo plano em intervalos de 15 minutos. Observe que no Windows Phone, o intervalo é 30 minutos.
Se FreshnessTime for definido como 15 minutos e OneShot for verdadeiro, a tarefa será executada uma vez começando entre 0 e 15 a partir do momento em que for registrada.
Se FreshnessTime for definido como 15 minutos e OneShot for falso, a tarefa será executada a cada 15 minutos começando entre 0 e 15 a partir do momento em que for registrada.
Observação Se FreshnessTime for definido para menos de 15 minutos, uma exceção ocorrerá quando você tentar registrar a tarefa em segundo plano.
Por exemplo, este gatilho fará com que uma tarefa em segundo plano seja executada uma vez de hora em hora:
var hourlyTrigger = new Windows.ApplicationModel.Background.TimeTrigger(60, false);
Etapa 2: (Opcional) Adicionar uma condição
Se necessário, adicione uma condição de tarefa em segundo plano para controlar quando a tarefa será executada. Condições impedem que sua tarefa em segundo plano seja executada até que a condição em questão seja atendida. Para saber mais, veja Como definir condições para executar uma tarefa em segundo plano.
Neste exemplo, a condição é definida como UserPresent para que, quando acionada, a tarefa seja executada somente quando o usuário estiver ativo. Para obter uma lista das possíveis condições, veja SystemConditionType.
O código a seguir adiciona uma condição à tarefa em segundo plano:
var userCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.UserPresent);
Etapa 3: Solicitar acesso à tela de bloqueio
Antes de tentar registrar a tarefa em segundo plano do TimeTrigger, chame RequestAccessAsync para solicitar a permissão do usuário para adicionar o aplicativo à tela de bloqueio.
No Windows, o código a seguir exibe uma caixa de diálogo para o usuário solicitando que seu aplicativo seja adicionado à tela de bloqueio. No telefone, simplesmente solicite que o sistema conceda ao aplicativo a habilidade de executar tarefas em segundo plano:
Windows.ApplicationModel.Background.BackgroundExecutionManager.RequestAccessAsync();
Observação Um aplicativo pode pedir acesso à tela de bloqueio apenas uma vez. O usuário pode escolher apenas uma das duas opções. Assim, sua preferência terá sido declarada. Outras chamadas ao RequestAccessAsync são ignoradas.
Etapa 4: Registrar a tarefa em segundo plano
Registre a tarefa em segundo plano chamando sua função de registro da tarefa em segundo plano. Para saber mais sobre o registro de tarefas em segundo plano, veja Como registrar uma tarefa em segundo plano.
O código a seguir registra a tarefa em segundo plano:
var entryPoint = “js\\ExampleBackgroundTask.js”;
var taskName = “Example hourly background task”;
var task = RegisterBackgroundTask(entryPoint, taskName, hourlyTrigger, userCondition);
Observação
A partir do Windows 8.1, os parâmetros de registro de tarefas de segundo plano são validados no momento do registro. Um erro será retornado se algum parâmetro de registro for inválido. Seu aplicativo deve ser capaz de manipular cenários em que o registro de tarefas de segundo plano apresenta falha - por exemplo, use uma instrução condicional para verificar se há erros de registro e tente novamente o registro com falha usando valores de parâmetros diferentes.
Comentários
Observação No Windows, as tarefas em segundo plano só serão registradas em um gatilho de tempo se o usuário tiver adicionado seu aplicativo à tela de bloqueio (ou recebido permissão quando o aplicativo solicitar acesso). Veja Exibindo blocos na tela de bloqueio. As tarefas em segundo plano também podem ser associadas a gatilhos que não exigem que o aplicativo esteja na tela de bloqueio. Para saber mais sobre esses tipos de gatilhos de tarefas em segundo plano, veja Oferecendo suporte para tarefas em segundo plano ao seu aplicativo.
Tópicos relacionados
Guia de início rápido: criar e registrar uma tarefa em segundo plano
Como registrar uma tarefa em segundo plano
Como declarar tarefas em segundo plano no manifesto do aplicativo
Como depurar uma tarefa em segundo plano
Diretrizes e listas de verificação para tarefas em segundo plano