Dando suporte ao aplicativo com tarefas 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]

Os tópicos nesta seção mostram como executar seu próprio código leve em segundo plano ao responder a gatilhos com tarefas em segundo plano. As tarefas em segundo plano são classes separadas que o sistema operacional executa em segundo plano. Você pode usar tarefas em segundo plano para fornecer funcionalidade quando o seu aplicativo é suspenso ou não está em execução. No JavaScript, você também pode executar tarefas em segundo plano em um temporizador.

As tarefas em segundo plano usam o namespace Windows.UI.WebUI.WebUIBackgroundTaskInstance para obter informações sobre a instância atual da tarefa em segundo plano. Você registra tarefas em segundo plano usando um objeto BackgroundTaskBuilder. O arquivo JavaScript da tarefa em segundo plano é especificado como o ponto de entrada enquanto a tarefa em segundo plano é registrada.

Para começar rapidamente com uma tarefa em segundo plano, veja Guia de início rápido: criar e registrar uma tarefa em segundo plano.

Tarefas em segundo plano para eventos do sistema

O aplicativo pode responder a eventos gerados pelo sistema registrando uma tarefa em segundo plano com SystemTrigger. Um aplicativo pode usar qualquer um dos seguintes gatilhos de evento do sistema (definidos em SystemTriggerType) sem ser colocado na tela de bloqueio.

Nome do gatilho Descrição

InternetAvailable

A Internet fica disponível.

NetworkStateChange

Ocorre uma mudança de rede, como uma mudança no custo ou na conectividade.

OnlineIdConnectedStateChange

A ID online associada à conta é alterada.

SmsReceived

Um nova mensagem SMS é recebida por um disponível de banda larga móvel instalado.

TimeZoneChange

O fuso horário muda no dispositivo (por exemplo, quando o sistema ajusta o relógio para o horário de verão).

 

Para saber mais, veja Como responder a eventos do sistema com tarefas em segundo plano.

Condições para tarefas em segundo plano

Você pode controlar quando a tarefa em segundo plano é executada, mesmo depois que for disparado, adicionando a condição. Depois de disparada, a tarefa em segundo plano não será executada até que todas as suas condições sejam atendidas. As seguintes condições (representadas pela enumeração SystemConditionType) podem ser usadas.

O nome da condição Descrição
InternetAvailable

A Internet deve estar disponível.

InternetNotAvailable

A Internet deve estar indisponível.

SessionConnected

A sessão deve estar conectada.

SessionDisconnected

A sessão deve estar desconectada.

 

Para saber mais, consulte Como definir condições para a execução de uma tarefa em segundo plano.

Requisitos do manifesto do aplicativo

Antes que o aplicativo possa registrar com êxito uma tarefa em segundo plano, ela deve ser declarada no manifesto do aplicativo. Para saber mais, veja Como declarar tarefas em segundo plano no manifesto do aplicativo.

Tarefas em segundo plano para aplicativos com recurso de tela de bloqueio

Os aplicativos pode ser colocados na tela de bloqueio para mostrarem em um relance as informações em tempo real para o usuário. Os seguintes gatilhos em tempo real pode ser usados para executar código personalizado leve em segundo plano para aplicativos na tela de bloqueio:

Canal de Controle: As tarefas em segundo plano podem manter a conexão ativada e receber mensagens no canal de controle usando o ControlChannelTrigger. Para saber mais, consulte Como o gatilho do canal de controle. (Observe que as tarefas em segundo do canal de controle só podem ser implementadas em C# ou C++.) O ControlChannelTrigger não é compatível com o Windows Phone.

Temporizador: É possível executar as tarefas em segundo plano a cada 15 minutos, e elas podem ser configuradas para execução em um período específico usando o TimeTrigger. Para saber mais, consulte Como executar uma tarefa em segundo plano em um temporizador.

Notificação por Push: As tarefas em segundo plano respondem ao PushNotificationTrigger para receber notificações por push bruta. Para saber mais, consulte Como receber notificações brutas.

Observação  Somente aplicativos da Windows Store. O usuário deve colocar seu aplicativo na tela de bloqueio para que ele possa usar essas tarefas em segundo plano. Um aplicativo pode solicitar acesso à tela de bloqueio chamando RequestAccessAsync. Isso apresenta uma caixa de diálogo solicitando que o usuário "permita" ou "não permita" o seu aplicativo na tela de bloqueio. Um aplicativo pode solicitar acesso à tela de bloqueio apenas uma vez; quaisquer chamadas subsequentes a RequestAccessAsync serão ignoradas.

Observação  

Os aplicativos da Loja do Windows Phone podem usar todos os gatilhos com suporte em segundo plano sem serem fixados na tela de bloqueio. No entanto, um aplicativo de telefone deve chamar RequestAccessAsync antes de registrar qualquer tipo de gatilho 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 (aplicativos do Tempo de Execução do Windows).

Gatilhos de evento do sistema para aplicativos com recurso de tela de bloqueio

Observação  A enumeração SystemTriggerType inclui os seguintes gatilhos de evento do sistema, que são utilizáveis apenas por aplicativos com tela de bloqueio. Um aplicativo deve ser colocado na tela de bloqueio antes que possa registrar uma tarefa em segundo plano com qualquer um desses gatilhos de evento do sistema.

Nome do gatilho Descrição

UserPresent

A tarefa em segundo plano é disparada quando o usuário está presente.

UserAway

A tarefa em segundo plano é disparada quando o usuário se ausenta.

ControlChannelReset

A tarefa em segundo plano é disparada quando um canal de controle é redefinido.

SessionConnected

A tarefa em segundo plano é disparada quando a sessão é conectada.

 

Os seguintes gatilhos de evento do sistema também servem para aplicativos com recursos de tela de bloqueio. Essas gatilhos podem ser registrados mesmo quando o aplicativo não está na tela de bloqueio, possibilitando reconhecer quando o usuário moveu o aplicativo de ou para a tela de bloqueio.

Nome do gatilho Descrição

LockScreenApplicationAdded

Um bloco de aplicativo é adicionado à tela de bloqueio.

LockScreenApplicationRemoved

Um bloco de aplicativo é removido da tela de bloqueio.

 

 

Restrições de recursos de tarefas em segundo plano

As tarefas em segundo plano são leves. Manter a execução em segundo plano em um nível mínimo garante a melhor experiência do usuário com aplicativos em primeiro plano e para a vida da bateria. Isso é reforçado pela aplicação de restrições de recursos a tarefas em segundo plano:

  • O uso da CPU é limitado da seguinte forma.

    Cota de uso de CPU Tempo de atualização
    Aplicativo do Windows fora da tela de bloqueio

    1 segundo

    2 horas

    Aplicativo do Windows na tela de bloqueio

    2 segundos

    15 minutos

    Aplicativo do Windows Phone

    2 segundos

    15 minutos

     

  • Com o uso de energia da bateria (corrente direta), as tarefas em segundo plano também têm um limite de uso dos dados de rede. Esse limite é uma função da quantidade de energia usada pela interface de rede, portanto varia dependendo do dispositivo e do ambiente de rede, mas pode ser estimada.

    A tabela a seguir caracteriza a taxa de transferência de dados pressupondo uma rede sem fio com restrição de recursos, mas capacitada para uma taxa média de transferência de 1 Mbps. Para calcular o limite correto, multiplique pela média de megabits por segundo (Mbps) da conexão. Por exemplo, um aplicativo pode usar 25 MB de dados a cada 2 horas em uma conexão Wi-Fi de 10Mbps se estiver na tela de bloqueio. A interface sem fio de exemplo pressupõe interferência mínima.

    Período de atualização 15 minutos 2 horas Diário
    Limite de dados (na tela de bloqueio) 0,469 MB n/a 45 MB
    Limite de dados (fora da tela de bloqueio) n/a 0,625 MB 7,5 MB

     

    Observação  O limite de uso de dados de rede é removido quando o dispositivo é conectado (corrente alternada), mas a cota de uso da CPU ainda se aplica. De maneira semelhante, as restrições de recurso de rede e CPU são suspensas para tarefas em segundo plano do aplicativo enquanto o usuário está interagindo com ele em primeiro plano.

     

Restrições adicionais do recurso de tarefa em segundo plano para aplicativos da Loja do Windows Phone

Além das restrições de recurso descritas na seção anterior, as tarefas em segundo plano de aplicativos da Loja do Windows Phone também têm as restrições a seguir.

Restrições de memória

Devido às restrições de recurso do fator forma do telefone, especialmente para dispositivos de baixa memória, as tarefas em segundo plano dos aplicativos Windows Phone possuem um limite de memória que determina a quantidade máxima de memória que as tarefas em segundo plano podem usar. Se a sua tarefa em segundo plano exceder esse limite, ela será terminada imediatamente. A alocação de memória depende do tipo de tarefa em segundo plano, bem como a memória total do sistema do dispositivo em que ela está em execução. Você deve considerar esses limites durante o desenvolvimento e o teste de seu aplicativo. Você também pode usar as APIs MemoryManager para consultar o uso atual da memória e o limite para ajustar seu uso em tempo de execução. A tabela a seguir lista as capacidades de memória, em megabytes, para os tipos especificados de tarefa em segundo plano para diferentes quantidades da memória total do sistema no dispositivo.

Tipo de tarefa em segundo plano 512 MB 1 GB 2 GB ou mais
Local 16 30 40
Bluetooth 16 16 16
Manutenção concluída 10 10 10
Outras tarefas em segundo plano 16 30 40
Limite durante a depuração 30 40 50

 

Limite por dispositivo para aplicativos com tarefas em segundo plano para dispositivos de pouca memória

Nos telefones com 512 MB de memória, há um limite no número de aplicativos que podem ser instalados em um dispositivo e usam tarefas em segundo plano em qualquer tempo determinado. Se esse número for excedido, a chamada para RequestAccessAsync, que é necessária para todas as tarefas em segundo plano no Windows Phone, falhará.

Economia de Bateria

No Windows Phone, o recurso de Economia da Bateria, quando habilitado, impedirá as tarefas em segundo plano de serem executadas quando o dispositivo não estiver conectado à alimentação externa e a bateria ficar abaixo de um nível especificado de energia restante. Isso não impede você de registrar tarefas em segundo plano.

Gatilho de manutenção

O aplicativo também pode executar tarefas a cada 15 minutos usando o gatilho de manutenção. Em vez de exigir o posicionamento na tela de bloqueio, as tarefas de manutenção são executadas apenas quando o dispositivo está conectado à energia. Para saber mais, veja Como usar os gatilhos de manutenção.

Tarefa em segundo plano para sensores e dispositivos

Seu aplicativo pode acessar sensores e dispositivos periféricos a partir de uma tarefa em segundo plano com a classe DeviceUseTrigger. Você pode usar esse gatilho para operações de longa duração, como sincronização ou monitoramento de dados. Ao contrário das tarefas para eventos de sistema, uma tarefa DeviceUseTrigger só pode ser disparada enquanto o aplicativo está sendo executado em primeiro plano e nenhuma condição pode ser definida nele. Dependendo de onde está sendo executada (computador ou telefone), uma tarefa em segundo plano DeviceUseTrigger suporta APIs diferentes e está sujeita a políticas diferentes. Para saber mais sobre essas diferenças, consulte Acessando sensores e dispositivos a partir de uma tarefa em segundo plano.

Algumas operações de dispositivos críticas, como atualizações de firmware de execução longa, não podem ser executadas com o DeviceUseTrigger. Tais operações podem ser executadas apenas no computador e apenas por um aplicativo privilegiado que use o DeviceServicingTrigger. Um aplicativo privilegiado é aquele que recebeu autorização do fabricante do dispositivo para executar essas operações. Os metadados do dispositivo são usados para especificar qual aplicativo, se houver, foi designado como o aplicativo privilegiado para um dispositivo. Para saber mais, veja Sincronização e atualização de dispositivos para aplicativos de dispositivos da Windows Store.

Gerenciando tarefas em segundo plano

Tarefas em segundo plano podem indicar o progresso, a conclusão e o cancelamento para o seu aplicativo usando eventos e o armazenamento local. Seu aplicativo também pode capturar exceções lançadas por uma tarefa em segundo plano, além de gerenciar o registro desse tipo de tarefa durante atualizações de aplicativo. Para saber mais, veja:

Como manipular uma tarefa em segundo plano cancelada

Como obter uma lista das tarefas em segundo plano pendentes

Como monitorar o progresso e a conclusão de tarefas em segundo plano

Como usar o gatilho ServicingComplete

Tópicos relacionados

Orientação conceitual sobre multitarefa no Windows 8

Introdução a tarefas em segundo plano

Inicializando, continuando e multitarefa

Diretriz de Interface do Usuário para a tela de bloqueio

Exibindo blocos na tela de bloqueio

Diretrizes e lista de verificação para blocos da tela de bloqueio

Diretrizes relacionadas para tarefas em segundo plano

Diretrizes e lista de verificação para tarefas em segundo plano

Como depurar uma tarefa em segundo plano

Como disparar eventos de suspensão, retomada e segundo plano em aplicativos da Windows Store (durante a depuração)

Acessando sensores e dispositivos a partir de uma tarefa em segundo plano

Sincronização e atualização de dispositivos para aplicativos de dispositivos da Windows Store