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.
Importante
Os metadados do dispositivo foram preteridos e serão removidos em uma versão futura do Windows. Para obter informações sobre a substituição dessa funcionalidade, consulte Metadados do contêiner do pacote de driver.
Seu aplicativo UWP pode usar uma tarefa em segundo plano do dispositivo para sincronizar dados no dispositivo periférico. Se seu aplicativo estiver associado a metadados de dispositivo, esse aplicativo de dispositivo UWP também poderá usar um agente de dispositivo em segundo plano para executar atualizações de dispositivo, como atualizações de firmware. Os agentes em segundo plano do dispositivo estão sujeitos a políticas que garantem o consentimento do usuário e ajudam a preservar a vida útil da bateria enquanto os dispositivos estão sendo sincronizados e atualizados.
Para executar operações de sincronização e atualização de dispositivos, crie uma tarefa em segundo plano do dispositivo que use DeviceUseTrigger e DeviceServicingTrigger, respectivamente. Para saber como criar uma tarefa em segundo plano de dispositivo com o Exemplo de dispositivo USB personalizado, consulte Criando uma tarefa em segundo plano de dispositivo.
As APIs de dispositivo do Windows Runtime não necessitam metadados do dispositivo. Isso significa que seu aplicativo não precisa ser um aplicativo de dispositivo UWP para usá-los. Os aplicativos UWP podem usar essas APIs para acessar USB, dispositivos de interface humana (HID), dispositivos Bluetooth e muito mais. Para obter mais informações, consulte Integração de dispositivos.
Visão geral da tarefa em segundo plano do dispositivo
Quando os usuários movem seu aplicativo UWP para fora da tela, o Windows suspende seu aplicativo na memória, permitindo que outro aplicativo tenha o primeiro plano. Quando uma aplicação é suspensa, é residente na memória, mas o Windows impediu-a de ser executada.
Todas as operações contínuas do dispositivo, como sincronização e atualização, são interrompidas sem a ajuda de uma tarefa em segundo plano do dispositivo. O Windows fornece dois gatilhos de tarefa em segundo plano para resolver esse problema: DeviceUseTrigger e DeviceServicingTrigger. Esses gatilhos permitem que seu aplicativo execute operações de sincronização e atualização de longa duração no dispositivo periférico com segurança em segundo plano, mesmo se o aplicativo estiver suspenso. Para saber mais sobre a suspensão do aplicativo, veja Iniciar, retomar e realizar várias tarefas.
| Gatilho de tarefa em segundo plano | Requer metadados do dispositivo | Descrição |
|---|---|---|
| DeviceUseTrigger | Não | Permite operações de sincronização de longa duração de ou para o dispositivo periférico enquanto a aplicação está suspensa. A sincronização do dispositivo em segundo plano requer que o usuário aprove a sincronização em segundo plano pelo aplicativo. O dispositivo também tem de estar ligado ou emparelhado com o PC, com E/S ativa e um máximo de 10 minutos de atividade em segundo plano permitida. Mais detalhes sobre a aplicação da política são descritos mais adiante neste artigo. |
| DeviceServicingTrigger | Sim | Permite atualizações de dispositivo de longa duração, por exemplo, transferências de configurações ou atualizações de firmware, enquanto seu aplicativo está suspenso. A atualização do seu dispositivo em segundo plano requer a aprovação do utilizador cada vez que a tarefa em segundo plano é utilizada. Ao contrário da tarefa em segundo plano DeviceUseTrigger, a tarefa em segundo plano DeviceServicingTrigger permite a reinicialização e desconexão do dispositivo e permite um máximo de 30 minutos de atividade em segundo plano. Mais detalhes sobre a aplicação da política são descritos mais adiante neste artigo. |
DeviceServicingTrigger requer metadados do dispositivo porque o aplicativo deve ser especificado como um aplicativo privilegiado para executar operações de atualização de dispositivo.
Privilégio do aplicativo
Um aplicativo privilegiado pode executar algumas operações críticas do dispositivo, como atualizações de dispositivo de longa duração. Um aplicativo privilegiado é o aplicativo que o fabricante do dispositivo autoriza a executar essas operações. Os metadados do dispositivo especificam qual aplicativo, se houver, é designado como o aplicativo privilegiado para um dispositivo.
Ao criar os metadados do dispositivo com o assistente de metadados do dispositivo, especifique seu aplicativo na página Especificar informações do aplicativo de dispositivo UWP . Para obter mais informações, consulte Etapa 2: Criar metadados de dispositivo para seu aplicativo de dispositivo UWP.
Protocolos suportados
As tarefas em segundo plano do dispositivo que usam DeviceUseTrigger e DeviceServicingTrigger permitem que seu aplicativo se comunique com dispositivos periféricos por meio de protocolos específicos. As tarefas acionadas pelo sistema normalmente usadas por aplicativos UWP não suportam esses protocolos.
| Protocolo | DeviceServicingTrigger | DeviceUseTrigger | Gatilhos do sistema |
|---|---|---|---|
| USB |
|
|
|
| HID |
|
|
|
| Bluetooth RFCOMM |
|
|
|
| Bluetooth GATT |
|
|
|
| MTP |
|
|
|
| Rede com fio |
|
|
|
| Rede Wi-Fi |
|
|
|
| IDeviceIOControl |
|
|
|
Registar tarefas em segundo plano no manifesto do pacote da aplicação
Seu aplicativo executa operações de sincronização e atualização em código que é executado como parte de uma tarefa em segundo plano. Esse código é incorporado em uma classe do Tempo de Execução do Windows que implementa IBackgroundTask (ou em uma página JavaScript dedicada para aplicativos JavaScript). Para usar uma tarefa em segundo plano do dispositivo, seu aplicativo deve declará-la no arquivo de manifesto do aplicativo de um aplicativo em primeiro plano, como faz para tarefas em segundo plano acionadas pelo sistema.
Neste exemplo de um arquivo de manifesto do pacote da aplicação, DeviceLibrary.SyncContent e DeviceLibrary.UpdateFirmware são pontos de entrada da aplicação em primeiro plano. DeviceLibrary.SyncContent é o ponto de entrada para a tarefa em segundo plano que usa o DeviceUseTrigger. DeviceLibrary.UpdateFirmware é o ponto de entrada para a tarefa em segundo plano que usa o DeviceServicingTrigger.
<Extensions>
<Extension Category="windows.backgroundTasks" EntryPoint="DeviceLibrary.SyncContent">
<BackgroundTasks>
<m2:Task Type="deviceUse" />
</BackgroundTasks>
</Extension>
<Extension Category="windows.backgroundTasks" EntryPoint="DeviceLibrary.UpdateFirmware">
<BackgroundTasks>
<m2:Task Type="deviceServicing" />
</BackgroundTasks>
</Extension>
</Extensions>
Utilizar o dispositivo com tarefas em segundo plano
Para desenvolver seu aplicativo para aproveitar as tarefas em segundo plano DeviceUseTrigger e DeviceServicingTrigger, siga este conjunto básico de etapas. Para saber mais sobre tarefas em segundo plano, veja Dando suporte ao seu aplicativo com tarefas em segundo plano.
Seu aplicativo registra sua tarefa em segundo plano no manifesto do aplicativo e incorpora o código da tarefa em segundo plano em uma classe do Tempo de Execução do Windows que implementa IBackgroundTask ou em uma página JavaScript dedicada para aplicativos JavaScript.
Quando seu aplicativo for iniciado, ele criará e configurará um objeto de gatilho de dispositivo do tipo apropriado, DeviceUseTrigger ou DeviceServicingTrigger, e armazenará a instância de gatilho para uso futuro.
Seu aplicativo verifica se a tarefa em segundo plano foi registrada anteriormente e, se não, a registra no gatilho do dispositivo. Seu aplicativo não tem permissão para definir condições na tarefa associada a esse gatilho.
Quando seu aplicativo precisa disparar a tarefa em segundo plano, ele chama o método de ativação RequestAsync no objeto de gatilho do dispositivo.
Sua tarefa em segundo plano não é limitada como outras tarefas em segundo plano do sistema (não há cota de tempo de CPU), mas é executada com prioridade reduzida para manter os aplicativos em primeiro plano responsivos.
Com base no tipo de gatilho, o Windows valida se as políticas necessárias são atendidas, incluindo a solicitação de consentimento do usuário para a operação antes de iniciar a tarefa em segundo plano.
O Windows monitora as condições do sistema e o tempo de execução da tarefa e, se necessário, cancela a tarefa se as condições necessárias não forem mais atendidas.
Quando as tarefas em segundo plano relatam o progresso ou a conclusão, seu aplicativo recebe esses eventos por meio de eventos de progresso e concluídos na tarefa registrada.
Pontos importantes a considerar ao usar as tarefas em segundo plano do dispositivo
A capacidade de acionar programaticamente tarefas em segundo plano que usam o DeviceUseTrigger e DeviceServicingTrigger é limitada apenas a tarefas em segundo plano do dispositivo.
O Windows impõe determinadas políticas para garantir o consentimento do usuário ao atualizar seus dispositivos periféricos. Mais políticas são aplicadas para preservar a vida útil da bateria do usuário ao sincronizar e atualizar dispositivos periféricos.
O Windows pode cancelar tarefas em segundo plano que usam DeviceUseTrigger e DeviceServicingTrigger quando determinados requisitos de política não forem mais atendidos, incluindo uma quantidade máxima de tempo em segundo plano (hora do relógio de parede). É importante considerar esses requisitos de política ao usar essas tarefas em segundo plano para interagir com seu dispositivo periférico.
Sugestão
Para ver como essas tarefas em segundo plano funcionam, baixe um exemplo. O exemplo de dispositivo USB personalizado demonstra uma tarefa em segundo plano que executa a sincronização do dispositivo com DeviceUseTrigger.
Consentimento do utilizador
Quando seu aplicativo usa DeviceUseTrigger ou DeviceServicingTrigger, o Windows impõe políticas para garantir que o usuário dê permissão ao seu aplicativo para acessar seu dispositivo em segundo plano para sincronizar e atualizar conteúdo. As políticas também são aplicadas para ajudar a preservar a vida útil da bateria do usuário ao sincronizar e atualizar dispositivos periféricos.
Consentimento do usuário de sincronização de dispositivo
Uma tarefa em segundo plano que usa DeviceUseTrigger requer um consentimento único do usuário permitindo que seu aplicativo seja sincronizado em segundo plano. Esse consentimento é armazenado por aplicativo e por modelo de dispositivo. O usuário consente em permitir que o aplicativo acesse o dispositivo em segundo plano, assim como consente em permitir que o aplicativo acesse o dispositivo quando o aplicativo está em primeiro plano.
No exemplo a seguir, um aplicativo chamado Tailspin Toys está recebendo permissão do usuário para sincronizar em segundo plano.
Se os utilizadores mudarem de ideias mais tarde, podem revogar as permissões nas Definições.
Consentimento do usuário de atualização de dispositivo
Ao contrário das tarefas em segundo plano que usam DeviceUseTrigger, aquelas que usam a tarefa em segundo plano DeviceServicingTrigger exigem o consentimento do usuário sempre que a tarefa em segundo plano é acionada. Este consentimento não é armazenado como para DeviceUseTrigger. Isso ocorre porque as atualizações de firmware do dispositivo envolvem operações de maior risco e precisam de mais tempo para serem concluídas.
O Windows também fornece aos usuários informações sobre atualizações de dispositivos. Isso inclui avisos para manter o dispositivo conectado durante toda a atualização e garantir que o PC esteja carregado. O Windows também mostra o tempo de execução aproximado da operação, se a sua aplicação o fornecer.
Frequência e restrições de primeiro plano
Não há restrição quanto à frequência com que seu aplicativo pode iniciar operações, mas seu aplicativo pode executar apenas uma operação de tarefa em segundo plano DeviceUseTrigger ou DeviceServicingTrigger de cada vez (isso não afeta outros tipos de tarefas em segundo plano) e pode iniciar uma tarefa em segundo plano apenas enquanto seu aplicativo estiver em primeiro plano. Quando seu aplicativo não está em primeiro plano, ele não consegue iniciar uma tarefa em segundo plano com DeviceUseTrigger ou DeviceServicingTrigger. Seu aplicativo não pode iniciar uma segunda tarefa em segundo plano do dispositivo antes que a primeira tarefa em segundo plano seja concluída.
Políticas de tarefas em segundo plano do dispositivo
O Windows impõe políticas quando seu aplicativo usa uma tarefa em segundo plano do dispositivo. Se essas políticas não forem atendidas, a tarefa em segundo plano usando DeviceUseTrigger ou DeviceServicingTrigger poderá ser cancelada. É importante considerar esses requisitos de política ao usar tarefas em segundo plano do dispositivo para interagir com o dispositivo periférico.
Políticas de iniciação de tarefas
Esta tabela indica quais políticas de iniciação de tarefas se aplicam a cada gatilho de tarefa em segundo plano.
| Policy | DeviceServicingTrigger | DeviceUseTrigger |
|---|---|---|
| Seu aplicativo UWP está em primeiro plano ao acionar a tarefa em segundo plano. |
|
Aplica-se a política |
| O dispositivo está ligado ao sistema (ou ao alcance de um dispositivo sem fios). |
|
Aplica-se a política |
| Sua tarefa em segundo plano consome 400ms de tempo de CPU (supondo uma CPU de 1GHz) a cada minuto quando a tela está bloqueada ou a cada 5 minutos quando a tela não está bloqueada. O não cumprimento desta política pode resultar no cancelamento da sua tarefa. |
|
Aplica-se a política |
| Seu dispositivo pode ser acessado pelo aplicativo usando as APIs periféricas do dispositivo (as APIs do Tempo de Execução do Windows para USB, HID, Bluetooth e assim por diante). Se o seu aplicativo não puder acessar o dispositivo, o acesso às tarefas em segundo plano será negado. |
|
Aplica-se a política |
| O ponto de entrada da tarefa em segundo plano fornecido pelo aplicativo é registrado no manifesto do pacote do aplicativo. |
|
Aplica-se a política |
| O usuário deu permissão à tarefa para continuar. | Sempre | Primeira vez, depois controladas por permissões da aplicação. |
| A estimativa de tempo fornecida pelo aplicativo é inferior a 30 minutos. |
|
|
| O aplicativo é especificado como o aplicativo privilegiado para o dispositivo. (Deve haver uma correspondência completa do ID da aplicação com a lista de aplicações privilegiadas nos metadados do dispositivo do contentor.) |
|
|
| O computador tem mais de 33% capacidade de bateria restante ou está com alimentação CA. |
|
|
| Apenas uma tarefa em segundo plano do dispositivo está sendo executada por tipo de operação. |
|
Aplica-se a política |
Verificações de política de tempo de execução
O Windows impõe os seguintes requisitos de política de tempo de execução enquanto a tarefa está sendo executada em segundo plano. Se qualquer um dos requisitos de tempo de execução deixar de ser verdadeiro, o Windows cancelará a tarefa em segundo plano do dispositivo.
Esta tabela indica quais políticas de tempo de execução se aplicam a cada gatilho de tarefa em segundo plano.
| Verificação da política | DeviceServicingTrigger | DeviceUseTrigger |
|---|---|---|
| Limite de tempo de relógio de parede – a quantidade total de tempo que a tarefa do seu aplicativo pode ser executada em segundo plano. | 30 minutos | 10 minutos |
| O dispositivo está ligado ao sistema (ou ao alcance de um dispositivo sem fios). |
|
|
| A tarefa está a realizar operações de E/S regulares para o dispositivo (1 E/S a cada 5 segundos). |
|
|
| O aplicativo não cancelou a tarefa. |
|
|
| O aplicativo não saiu. |
|
|
Melhores práticas
A seguir estão as práticas recomendadas para aplicativos de dispositivo UWP que usam as tarefas em segundo plano do dispositivo.
Modelo de programação de tarefas em segundo plano do dispositivo
Usar as tarefas em segundo plano DeviceUseTrigger ou DeviceServicingTrigger do seu aplicativo garante que todas as operações de sincronização ou atualização de dispositivo iniciadas a partir do seu aplicativo em primeiro plano continuem a ser executadas em segundo plano se os usuários trocarem de aplicativo e seu aplicativo em primeiro plano for suspenso pelo Windows. Recomendamos que você siga este modelo geral para registrar, acionar e cancelar o registro de suas tarefas em segundo plano:
Registre a tarefa em segundo plano antes de solicitar o gatilho.
Conecte manipuladores de eventos de progresso e conclusão ao seu disparador. Quando seu aplicativo retorna da suspensão, o Windows fornece ao aplicativo todos os eventos de progresso ou conclusão em fila que podem ser usados para determinar o status de suas tarefas em segundo plano.
Feche todos os objetos de dispositivo abertos quando acionar suas tarefas em segundo plano DeviceUseTrigger ou DeviceServicingTrigger para que esses dispositivos fiquem livres para serem abertos e usados pela sua tarefa em segundo plano.
Registe o gatilho.
Quando uma tarefa for concluída, cancele o registro da tarefa em segundo plano. Quando a tarefa em segundo plano for concluída, você poderá cancelar o registro das tarefas em segundo plano e reabrir o dispositivo e usá-lo regularmente a partir do seu aplicativo UWP.
Registre-se para eventos de cancelamento da sua classe de tarefa em segundo plano. Registar eventos de cancelamento permite que o código da sua tarefa em segundo plano pare de forma ordenada a execução da tarefa em segundo plano quando cancelada pelo Windows ou pelo seu aplicativo em primeiro plano.
Ao sair do aplicativo (não suspensão), cancele o registro e cancele todas as tarefas em execução.
Quando o aplicativo for encerrado, cancele o registro e cancele todas as tarefas em execução.
Quando seu aplicativo é encerrado, suas tarefas em segundo plano são canceladas e todos os manipuladores de eventos existentes são desconectados de suas tarefas em segundo plano existentes. Isso impede que você determine o estado de suas tarefas em segundo plano. Cancelar o registro e cancelar a tarefa em segundo plano permitirá que seu código de cancelamento interrompa suas tarefas em segundo plano.
Sugestão
Para obter uma descrição detalhada de como isso é feito com o exemplo de dispositivo USB personalizado, consulte Criando uma tarefa em segundo plano de dispositivo.
Cancelar uma tarefa em segundo plano
Para cancelar uma tarefa em execução em segundo plano a partir do seu aplicativo em primeiro plano, use o método Unregister no objeto BackgroundTaskRegistration que você usa em seu aplicativo para registrar a tarefa em segundo plano DeviceUseTrigger ou DeviceServicingTrigger . Desregistar a sua tarefa em segundo plano utilizando o método Unregister em BackgroundTaskRegistration faz com que a infraestrutura das tarefas em segundo plano cancele a sua tarefa em segundo plano.
O método Unregister também usa um valor booleano true ou false para indicar se as instâncias atualmente em execução da sua tarefa em segundo plano devem ser canceladas sem permitir que elas sejam concluídas. Para obter mais informações, consulte a referência da API para BackgroundTaskRegistration.Unregister.