Como definir condições para execução de uma tarefa em segundo plano (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 definir condições para executar a sua tarefa em segundo plano, que contribuem para que ela seja executada apenas quando apropriado. Às vezes, tarefas em tela de fundo exigem que certas condições sejam atendidas, além do evento que as disparam, para que possam ser concluídas com sucesso. Você pode definir uma ou mais das condições especificadas por SystemConditionType ao registrar sua tarefa em segundo plano. A condição será verificada depois que o gatilho tiver sido disparado. A tarefa em segundo plano será enfileirada, mas não será executada até que todas as condições necessárias sejam atendidas.
Colocar condições em tarefas em segundo plano poupa bateria e tempo de execução da CPU, evitando que as tarefas sejam executadas sem necessidade. Por exemplo, se a sua tarefa em segundo plano é executada com um temporizador e requer conectividade com a Internet, adicione a condição InternetAvailable a TaskBuilder antes de registrar a tarefa. Isso irá ajudar a impedir que a tarefa use recursos do sistema e vida útil da bateria necessariamente, permitindo que ela seja executada quando o temporizador tiver expirado e a Internet estiver disponível.
O que você precisa saber
Tecnologias
Pré-requisitos
- Este tópico supõe que você já tenha uma tarefa em segundo plano associada ao seu aplicativo e que este último já inclua o código encarregado de criar um objeto BackgroundTaskBuilder denominado taskBuilder.
Instruções
Etapa 1: Criar um objeto SystemCondition
Antes de adicionar a condição, crie um objeto SystemCondition representando a condição que precisa estar em efeito para uma tarefa em segundo plano ser executada. No construtor, especifique a condição que precisa ser atendida, fornecendo um valor de enumeração SystemConditionType.
O código a seguir cria um objeto SystemCondition que especifica a disponibilidade da Internet como o requisito condicional:
var internetCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.InternetAvailable);
Etapa 2: Adicionar o objeto SystemCondition à sua tarefa em segundo plano
Para adicionar a condição, chame o método AddCondition no objeto BackgroundTaskBuilder e passe a ele o objeto SystemCondition.
O código a seguir registra a condição da tarefa em segundo plano InternetAvailable em TaskBuilder:
taskBuilder.AddCondition(internetCondition);
Etapa 3: Registrar sua tarefa em segundo plano
Agora, você pode registrar sua tarefa em segundo plano no método Register, e ela apenas será iniciada quando a condição especificada for atendida.
O código a seguir registra a tarefa e armazena o objeto BackgroundTaskRegistration resultante:
var task = taskBuilder.Register();
Observação
Nos aplicativos da Loja do Windows Phone, você deve chamar RequestAccessAsync antes de tentar registrar qualquer tarefa em segundo plano. No Windows, essa chamada é necessária somente para configurar tarefas em segundo plano que podem executar somente se seu aplicativo estiver na tela de bloqueio, mas no telefone você deve chamar esse método uma vez para poder registrar qualquer tarefa em segundo plano.
Para garantir que seu aplicativo do Windows Phone continua a ser executado corretamente depois que você liberar uma atualização, chame RemoveAccess e, em seguida, chame RequestAccessAsync quando seu aplicativo for iniciado após a atualização. Para saber mais, consulte Diretrizes para tarefas em segundo plano (HTML).
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.
Etapa 4: Inserir várias condições na sua tarefa em segundo plano
Para adicionar várias condições, seu aplicativo faz várias chamadas ao método AddCondition. Essas chamadas devem ser feitas antes que o registro da tarefa se torne efetivo.
Observação Tome cuidado para não adicionar condições conflitantes a uma tarefa em segundo plano.
O trecho a seguir mostra várias condições no contexto de criação e registro de uma tarefa em segundo plano:
var hourlyTrigger = new Windows.ApplicationModel.Background.TimeTrigger(60, false);
var recurringTaskBuilder = new Windows.ApplicationModel.Background.BackgroundTaskBuilder();
recurringTaskBuilder.Name = "Hourly background task for YourApp";
recurringTaskBuilder.TaskEntryPoint = "js\\ExampleBackgroundTask.js";
recurringTaskBuilder.SetTrigger(hourlytrigger);
//
// Begin adding conditions.
//
var userCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.UserPresent);
var internetCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.InternetAvailable);
taskBuilder.AddCondition(userCondition);
taskBuilder.AddCondition(internetCondition);
//
// Done adding conditions. Now we register the background task.
//
var task = recurringTaskBuilder.Register();
Comentários
Observação Escolha as condições certas para a sua tarefa em segundo plano, de forma que ela apenas seja executada quando for necessária, e não em situações nas quais ela não irá funcionar. Confira SystemConditionType para ver descrições das diferentes condições de tarefas em tela de fundo.
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 responder a eventos do sistema com tarefas em tela de fundo
Quando usar gatilhos de manutenção
Como declarar tarefas em tela de fundo no manifesto do aplicativo
Como depurar uma tarefa em segundo plano
Diretrizes e listas de verificação para tarefas em segundo plano