Diretrizes e lista de verificação para 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]

Crie melhores tarefas em segundo plano para dar suporte ao seu aplicativo e verifique se o aplicativo cumpre os requisitos para execução de tarefas em segundo plano.

Diretrizes da tarefa em segundo plano

Considere as diretrizes a seguir na hora de desenvolver sua tarefa em segundo plano e antes de publicar seu aplicativo.

Fechar suas tarefas em segundo plano: Não esqueça que a tarefa em segundo plano precisa chamar o método close() quando terminar. Se a tarefa em segundo plano não fechar sozinha, o processo que a estiver executando poderá continuar consumindo memória e bateria mesmo que ela tenha sido concluída ou cancelada.

Cotas da CPU e rede: Não exceda a cota da CPU nem a cota de uso de dados da rede aplicadas à sua tarefa em segundo plano. As tarefas em segundo plano devem ser leves para economizar a vida útil da bateria e proporcionar melhor experiência do usuário para aplicativos em primeiro plano. Veja Suportando o seu aplicativo com tarefas em segundo plano para saber as restrições de recursos que se aplicam às tarefas em segundo plano.

Gerenciar tarefas em segundo plano: Seu aplicativo deve obter uma lista de tarefas em segundo plano registradas, registrar os manipuladores de progresso e conclusão e manipular esses eventos de forma adequada. As tarefas em tela em segundo plano devem relatar o progresso, o cancelamento e a conclusão. Veja Como obter uma lista de tarefas em segundo plano pendentes, Como manipular uma tarefa em segundo plano cancelada e Como monitorar progresso e conclusão de tarefas em segundo plano.

Atualizar o manifesto do aplicativo: Declare cada tarefa em segundo plano no manifesto do aplicativo, juntamente com o tipo dos gatilhos usados. Do contrário, seu aplicativo não vai poder registrar a tarefa em segundo plano no tempo de execução. Para saber mais, veja Como declarar tarefas em segundo plano no manifesto do aplicativo.

Preparar para atualizações do aplicativo: Se o seu aplicativo vai ser atualizado, crie e registre uma ServicingComplete tarefa em segundo plano (veja SystemTriggerType) para realizar as atualizações do aplicativo que possam ser necessárias fora do contexto de execução em primeiro plano.

Tarefas em segundo plano para aplicativos com recurso de tela de bloqueio no Windows: A tela de bloqueio é um recurso compartilhado. Apenas sete aplicativos podem ser colocados na tela de bloqueio de cada vez, e somente um pode mostrar um bloco largo. Seu aplicativo pode proporcionar uma boa experiência do usuário solicitando o acesso à tela de bloqueio por meio do método RequestAccessAsync e verificando se o aplicativo ainda funciona fora da tela de bloqueio. Os aplicativos que não são colocados em tela de bloqueio ainda podem atualizar blocos e notificações, enviar notificações e registar gatilhos de eventos do sistema. A experiência do usuário quando o aplicativo está em primeiro plano nunca deve ser interrompida, mesmo quando o usuário não tiver colocado o aplicativo na tela de bloqueio.

Leia Visão geral da tela de bloqueio para reconhecer quando a tela de bloqueio é o local certo para o seu aplicativo.

Solicitando a execução de tarefas em segundo plano para aplicativos da Loja do Windows Phone:

Os aplicativos da Loja do Windows Phone podem executar todos os tipos de tarefas com suporte sem serem fixados na tela de bloqueio. No entanto, seu aplicativo deve chamar RequestAccessAsync antes de registrar qualquer tipo de tarefa em segundo plano. Esse método retornará BackgroundAccessStatus.Denied se o número máximo de aplicativos com tarefas em segundo plano no sistema tiver sido excedido ou se o usuário tiver negado explicitamente permissões de tarefas em segundo plano para seu aplicativo nas configurações do dispositivo.

Para aplicativos da Loja do Windows Phone, se o seu aplicativo for atualizado, você deverá chamar RemoveAccess e depois RequestAccessAsync quando o aplicativo for iniciado após a atualização. Para determinar quando seu aplicativo foi atualizado, você deve controlar o número da versão do aplicativo usando um valor armazenado em configurações locais. Quando seu aplicativo for iniciado, verifique a versão do aplicativo e se ele for mais recente do que a versão que está nas configurações locais, chame RemoveAccess e RequestAccessAsync. Para fazer isso, adicione o código semelhante a seguir e chame-o desde o manipulador de eventos de lançamento para o seu aplicativo.

function checkAppVersion() {
    var localSettings = Windows.Storage.ApplicationData.current.localSettings;
    var pkgVersion = Windows.ApplicationModel.Package.current.id.version;
    var backgroundExecMgr = Windows.ApplicationModel.Background.BackgroundExecutionManager;

    var appVersion = pkgVersion.build + "." +
                        pkgVersion.major + "." +
                        pkgVersion.minor + "." +
                        pkgVersion.revision;

    if (localSettings.values["appVersion"] != appVersion)
    {
        // Our app has been updated
        localSettings.values["appVersion"] = appVersion;

        // Call removeAccess
        backgroundExecMgr.removeAccess();
    }
        
    backgroundExecMgr.requestAccessAsync();
}

Lista de verificação da tarefa em segundo plano

A lista de verificação a seguir aplica-se a todas as tarefas em segundo plano.

  • Associe a sua tarefa em segundo plano ao gatilho correto.

  • Adicione condições que ajudem a garantir uma execução bem-sucedida da tarefa em segundo plano.

  • Manipule o progresso, a conclusão e o cancelamento de tarefas em segundo plano.

  • Não exiba elementos da interface do usuário diferentes de notificações do sistema, blocos e atualizações de notificação da tarefa em segundo plano.

  • Chame close() quando a tarefa em segundo plano terminar o trabalho.

  • Use o armazenamento persistente para compartilhar dados entre a tarefa em segundo plano e o aplicativo.

  • Declare cada tarefa em segundo plano no manifesto do aplicativo, juntamente com o tipo dos gatilhos usados. Verifique se o ponto de entrada e os tipos de gatilho estão corretos.

  • Elabore tarefas em segundo plano de curta duração. Não exceda as cotas da CPU ou de rede mostradas em Oferecendo suporte a tarefas em segundo plano em seu aplicativo.

  • Não conte com a interação do usuário nas tarefas em segundo plano.

  • Verifique se há erros de registro de tarefas de segundo plano. Se for apropriado, tente registrar a tarefa de segundo plano novamente com valores de parâmetros diferentes.

Windows: lista de verificação de tarefa em segundo plano para aplicativos com recurso de tela de bloqueio

Siga essas diretrizes ao desenvolver tarefas em segundo plano para aplicativos que podem estar na tela de bloqueio. Siga as diretrizes em Diretrizes e lista de verificação para blocos da tela de bloqueio.

  • Verifique se o seu aplicativo precisa estar na tela de bloqueio antes de desenvolvê-lo contendo recurso de tela de bloqueio. Para saber mais, veja Visão geral da tela de bloqueio.

  • Verifique se o seu aplicativo ainda funciona fora da tela de bloqueio.

  • Solicite o acesso à tela de bloqueio usando o método RequestAccessAsync.

  • Inclua uma tarefa em segundo plano registrada com TimeTrigger e declare-a no manifesto do aplicativo. Verifique se o ponto de entrada e os tipos de gatilho estão corretos. Isso é necessário para certificação e permite que o usuário coloque o aplicativo na tela de bloqueio.

  • Grave tarefas em segundo plano curtas, mesmo para aplicativos com recurso de tela de bloqueio. Não exceda as cotas da CPU ou de rede mostradas em Oferecendo suporte a tarefas em segundo plano em seu aplicativo.

  • Para aplicativos da Loja do Windows Phone, se o dispositivo ficar com pouca memória, as tarefas em segundo plano poderão ser encerradas sem qualquer aviso e sem gerar o evento OnCanceled. Isso ajuda a assegurar a experiência do usuário do aplicativo em primeiro plano. A tarefa em segundo plano deverá ser projetada para tratar desse cenário.

Tópicos relacionados

Outros tópicos relacionados a tarefas em segundo plano

Guia de início rápido: criar e registrar uma tarefa em segundo plano

Como registrar uma tarefa em segundo plano

Como depurar uma tarefa em segundo plano

Como declarar tarefas em segundo plano no manifesto do aplicativo

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

Outras diretrizes de tela de bloqueio

Visão geral da tela de bloqueio

Exibindo blocos na tela de bloqueio

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