Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
APIs importantes
- AcionadorDeManutenção
- BackgroundTaskBuilder
- Condição do Sistema
Saiba como usar a classe MaintenanceTrigger para executar código leve em segundo plano enquanto o dispositivo está conectado.
Criar um objeto de gatilho de manutenção
Este exemplo pressupõe que você tenha um código leve que possa ser executado em segundo plano para aprimorar seu aplicativo enquanto o dispositivo estiver conectado. Este tópico se concentra no MaintenanceTrigger, que é semelhante ao SystemTrigger.
Mais informações sobre como escrever uma classe de tarefa em segundo plano estão disponíveis em Criar e registrar uma tarefa em segundo plano em processo ou Criar e registrar uma tarefa em segundo plano fora do processo.
Crie um novo objeto MaintenanceTrigger. O segundo parâmetro, OneShot, especifica se a tarefa de manutenção será executada apenas uma vez ou continuará a ser executada periodicamente. Se OneShot estiver definido para true, o primeiro parâmetro (FreshnessTime) especifica o número de minutos a aguardar antes de agendar a tarefa em segundo plano. Se OneShot estiver definido como false, FreshnessTime especifica com que frequência a tarefa em segundo plano será executada.
Observação
Se FreshnessTime estiver definido para menos de 15 minutos, é lançada uma exceção ao tentar registar a tarefa em segundo plano.
Este código de exemplo cria um gatilho que é executado uma vez por hora.
uint waitIntervalMinutes = 60;
MaintenanceTrigger taskTrigger = new MaintenanceTrigger(waitIntervalMinutes, false);
uint32_t waitIntervalMinutes{ 60 };
Windows::ApplicationModel::Background::MaintenanceTrigger taskTrigger{ waitIntervalMinutes, false };
unsigned int waitIntervalMinutes = 60;
MaintenanceTrigger ^ taskTrigger = ref new MaintenanceTrigger(waitIntervalMinutes, false);
(Opcional) Adicionar uma condição
- Se necessário, crie uma condição de tarefa em segundo plano para controlar quando a tarefa é executada. Uma condição impede que sua tarefa em segundo plano seja executada até que a condição seja atendida - para obter mais informações, consulte Definir condições para executar uma tarefa em segundo plano
Neste exemplo, a condição é definida como InternetAvailable para que a manutenção seja executada quando a Internet estiver disponível (ou quando estiver disponível). Para obter uma lista de possíveis condições de tarefas em segundo plano, consulte SystemConditionType.
O código a seguir adiciona uma condição ao construtor de tarefas de manutenção:
SystemCondition exampleCondition = new SystemCondition(SystemConditionType.InternetAvailable);
Windows::ApplicationModel::Background::SystemCondition exampleCondition{
Windows::ApplicationModel::Background::SystemConditionType::InternetAvailable };
SystemCondition ^ exampleCondition = ref new SystemCondition(SystemConditionType::InternetAvailable);
Registar a tarefa em segundo plano
- Registre a tarefa em segundo plano chamando sua função de registro de tarefa em segundo plano. Para obter mais informações sobre como registrar tarefas em segundo plano, consulte Registrar uma tarefa em segundo plano.
O código a seguir registra a tarefa de manutenção. Observe que ele pressupõe que sua tarefa em segundo plano seja executada em um processo separado do seu aplicativo porque especifica entryPoint. Se a tarefa em segundo plano for executada no mesmo processo que a sua aplicação, não deve especificar entryPoint.
string entryPoint = "Tasks.ExampleBackgroundTaskClass";
string taskName = "Maintenance background task example";
BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition);
std::wstring entryPoint{ L"Tasks.ExampleBackgroundTaskClass" };
std::wstring taskName{ L"Maintenance background task example" };
Windows::ApplicationModel::Background::BackgroundTaskRegistration task{
RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition) };
String ^ entryPoint = "Tasks.ExampleBackgroundTaskClass";
String ^ taskName = "Maintenance background task example";
BackgroundTaskRegistration ^ task = RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition);
Observação
Para todas as famílias de dispositivos, exceto desktop, se o dispositivo ficar com pouca memória, as tarefas em segundo plano podem ser encerradas. Se uma exceção de falta de memória não for exibida ou o aplicativo não lidar com ela, a tarefa em segundo plano será encerrada sem aviso e sem gerar o evento OnCanceled. Isso ajuda a garantir a experiência do usuário do aplicativo em primeiro plano. Sua tarefa em segundo plano deve ser projetada para lidar com esse cenário.
Observação
Os aplicativos da Plataforma Universal do Windows devem chamar RequestAccessAsync antes de registrar qualquer um dos tipos de gatilho em segundo plano.
Para garantir que seu aplicativo Universal do Windows continue a ser executado corretamente depois de lançar uma atualização para seu aplicativo, você deve chamar RemoveAccess e, em seguida, chamar RequestAccessAsync quando seu aplicativo for iniciado após ser atualizado. Para obter mais informações, consulte Diretrizes para tarefas em segundo plano.
Observação
Os parâmetros de registro de tarefas em segundo plano são validados no momento do registro. Um erro será retornado se qualquer um dos parâmetros de registro for inválido. Certifique-se de que seu aplicativo lida normalmente com cenários em que o registro de tarefas em segundo plano falha - se, em vez disso, seu aplicativo depender de ter um objeto de registro válido depois de tentar registrar uma tarefa, ele poderá falhar.
Tópicos relacionados
- Crie e registe uma tarefa em segundo plano em execução.
- Criar e registrar uma tarefa em segundo plano fora do processo
- Declarar tarefas em segundo plano no manifesto do aplicativo
- Lidar com uma tarefa em segundo plano cancelada
- Monitorar o progresso e a conclusão de tarefas em segundo plano
- Registrar uma tarefa em segundo plano
- Responda aos eventos do sistema com tarefas em segundo plano
- Definir condições para executar uma tarefa em segundo plano
- Atualizar um mosaico dinâmico a partir de uma tarefa em segundo plano
- Executar uma tarefa em segundo plano em um temporizador
- Diretrizes para tarefas em segundo plano
- Debugar uma tarefa em segundo plano
- Como desencadear eventos de suspensão, retomada e em segundo plano em aplicações UWP (durante a depuração)