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.
Saiba como usar o ApplicationTrigger para ativar uma tarefa em segundo plano de dentro do seu aplicativo.
Para obter um exemplo de como criar um gatilho de aplicativo, consulte este exemplo.
Este tópico pressupõe que você tenha uma tarefa em segundo plano que deseja ativar do seu aplicativo. Se você ainda não tiver uma tarefa em segundo plano, há um exemplo de tarefa em segundo plano em BackgroundActivity.cs. Ou siga as etapas em Criar e registrar uma tarefa em segundo plano fora de processo criar uma.
Por que usar um gatilho de aplicativo
Use um ApplicationTrigger
Criar um gatilho de aplicativo
Crie um novo ApplicationTrigger. Você pode armazená-lo em um campo, como é feito no trecho abaixo. Isso é por conveniência para que não tenhamos que criar uma nova instância mais tarde quando quisermos sinalizar o gatilho. Mas, pode usar qualquer instância de ApplicationTrigger para sinalizar o gatilho.
// _AppTrigger is an ApplicationTrigger field defined at a scope that will keep it alive
// as long as you need to trigger the background task.
// Or, you could create a new ApplicationTrigger instance and use that when you want to
// trigger the background task.
_AppTrigger = new ApplicationTrigger();
// _AppTrigger is an ApplicationTrigger field defined at a scope that will keep it alive
// as long as you need to trigger the background task.
// Or, you could create a new ApplicationTrigger instance and use that when you want to
// trigger the background task.
Windows::ApplicationModel::Background::ApplicationTrigger _AppTrigger;
// _AppTrigger is an ApplicationTrigger field defined at a scope that will keep it alive
// as long as you need to trigger the background task.
// Or, you could create a new ApplicationTrigger instance and use that when you want to
// trigger the background task.
ApplicationTrigger ^ _AppTrigger = ref new ApplicationTrigger();
(Opcional) Adicionar uma condição
Você pode criar uma condição de tarefa em segundo plano para controlar quando a tarefa é executada. Uma condição impede que a 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, uma vez acionada, a tarefa só seja executada quando o acesso à Internet estiver disponível. Para obter uma lista de condições possíveis, consulte SystemConditionType.
SystemCondition internetCondition = new SystemCondition(SystemConditionType.InternetAvailable);
Windows::ApplicationModel::Background::SystemCondition internetCondition{
Windows::ApplicationModel::Background::SystemConditionType::InternetAvailable };
SystemCondition ^ internetCondition = ref new SystemCondition(SystemConditionType::InternetAvailable)
Para obter informações mais detalhadas sobre condições e tipos de acionadores em segundo plano, consulte Dar suporte ao seu aplicativo com tarefas em segundo plano.
Chamar "RequestAccessAsync()"
Antes de registar a tarefa em segundo plano ApplicationTrigger, chame RequestAccessAsync para determinar o nível de atividade em segundo plano que o utilizador permite, pois o utilizador pode ter desativado a atividade em segundo plano da sua aplicação. Consulte Otimizar a atividade em segundo plano para obter mais informações sobre como os usuários podem controlar as configurações da atividade em segundo plano.
var requestStatus = await Windows.ApplicationModel.Background.BackgroundExecutionManager.RequestAccessAsync();
if (requestStatus != BackgroundAccessStatus.AlwaysAllowed)
{
// Depending on the value of requestStatus, provide an appropriate response
// such as notifying the user which functionality won't work as expected
}
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 e ver a definição do método
Se estiver a considerar usar um Trigger de Aplicação para estender o tempo de execução do seu processo em segundo plano, considere usar Execução Estendida em vez disso. O Gatilho de Aplicação foi projetado para criar um processo hospedado separadamente com a finalidade de realizar tarefas. O trecho de código a seguir registra um gatilho em segundo plano fora do processo.
string entryPoint = "Tasks.ExampleBackgroundTaskClass";
string taskName = "Example application trigger";
BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, appTrigger, internetCondition);
std::wstring entryPoint{ L"Tasks.ExampleBackgroundTaskClass" };
std::wstring taskName{ L"Example application trigger" };
Windows::ApplicationModel::Background::BackgroundTaskRegistration task{
RegisterBackgroundTask(entryPoint, taskName, appTrigger, internetCondition) };
String ^ entryPoint = "Tasks.ExampleBackgroundTaskClass";
String ^ taskName = "Example application trigger";
BackgroundTaskRegistration ^ task = RegisterBackgroundTask(entryPoint, taskName, appTrigger, internetCondition);
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.
Acionar a tarefa em segundo plano
Antes de disparar a tarefa em segundo plano, use BackgroundTaskRegistration para verificar se a tarefa em segundo plano está registrada. Um bom momento para verificar se todas as suas tarefas em segundo plano estão registradas é durante a inicialização do aplicativo.
Acione a tarefa em segundo plano chamando ApplicationTrigger.RequestAsync. Qualquer instância de ApplicationTrigger será suficiente.
Note que ApplicationTrigger.RequestAsync não pode ser chamado a partir da tarefa em segundo plano ou quando a aplicação está no estado de execução em segundo plano (consulte ciclo de vida da aplicação para obter mais informações sobre os estados da aplicação). Pode retornar DisabledByPolicy se o utilizador tiver definido políticas de energia ou privacidade que impeçam a aplicação de executar atividades em segundo plano. Além disso, apenas um AppTrigger pode ser executado de cada vez. Se você tentar executar um AppTrigger enquanto outro já estiver em execução, a função retornará CurrentlyRunning .
var result = await _AppTrigger.RequestAsync();
Gerenciar recursos para sua tarefa em segundo plano
Use BackgroundExecutionManager.RequestAccessAsync para determinar se o usuário decidiu que a atividade em segundo plano do seu aplicativo deve ser limitada. Esteja atento ao uso da bateria e só execute em segundo plano quando for necessário concluir uma ação que o usuário deseja. Consulte Otimizar a atividade em segundo plano para obter mais informações sobre como os usuários podem controlar as configurações da atividade em segundo plano.
- Memória: ajustar a memória e o uso de energia do seu aplicativo é fundamental para garantir que o sistema operacional permita que sua tarefa em segundo plano seja executada. Use as APIs de Gestão de Memória para ver a quantidade de memória que sua tarefa em segundo plano está usando. Quanto mais memória sua tarefa em segundo plano usar, mais difícil será para o sistema operacional mantê-la em execução quando outro aplicativo estiver em primeiro plano. Em última análise, o usuário controla toda a atividade em segundo plano que seu aplicativo pode executar e tem visibilidade sobre o impacto que seu aplicativo tem no uso da bateria.
- Tempo da CPU: As tarefas em segundo plano são limitadas pela quantidade de tempo de uso do relógio de parede que obtêm com base no tipo de gatilho. As tarefas em segundo plano acionadas pelo gatilho do aplicativo são limitadas a cerca de 10 minutos.
Consulte Apoie a sua aplicação com tarefas em segundo plano para conhecer as restrições de recursos aplicadas às tarefas em segundo plano.
Observações
A partir do Windows 10, não é mais necessário que o usuário adicione seu aplicativo à tela de bloqueio para utilizar tarefas em segundo plano.
Uma tarefa em segundo plano só será executada usando um ApplicationTrigger se tiver chamado RequestAccessAsync primeiro.
Tópicos relacionados
- Diretrizes para tarefas em segundo plano
- Exemplo de código de tarefa em segundo plano
- Crie e registe uma tarefa em segundo plano em execução.
- Criar e registrar uma tarefa em segundo plano fora do processo
- Debugar uma tarefa em segundo plano
- Declarar tarefas em segundo plano no manifesto do aplicativo
- Memória livre quando seu aplicativo se move para o plano de fundo
- Lidar com uma tarefa em segundo plano cancelada
- Como desencadear eventos de suspensão, retomada e em segundo plano em aplicações UWP (durante a depuração)
- Monitorar o progresso e a conclusão de tarefas em segundo plano
- Adiar a suspensão do aplicativo com execução estendida
- 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
- Use um gatilho de manutenção