Transferindo dados 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]

Use as APIs Windows.Networking.BackgroundTransfer fornecidas pelo Tempo de Execução do Windows para aperfeiçoar seu aplicativo com recursos avançados de download e carregamento de arquivos que possam ser executados em segundo plano durante o período de suspensão do aplicativo, que sejam demonstrados por gerenciamento do ciclo de vida da operação e que persistam após a finalização do aplicativo. Esse recurso é ideal para operações grandes de download e carregamento de arquivos usando os protocolos HTTP e HTTPS. Há suporte para FTP, mas apenas nas operações de download.

A Transferência em Segundo Plano é executada separadamente do aplicativo que fez a chamada e foi desenvolvida principalmente para operações de longo prazo para transferência de recursos como vídeo, música e imagens grandes. Para esses cenários, o uso de Transferência em Segundo Plano é essencial porque os downloads continuam em andamento mesmo quando o aplicativo é suspenso. No telefone, as transferências em segundo plano continuam em andamento mesmo quando o aplicativo é encerrado. Para saber mais sobre o ciclo de vida do aplicativo, examine a documentação Ciclo de vida do aplicativo.

Observação   Se você estiver baixando recursos pequenos que provavelmente concluem rapidamente, deve usar APIs HttpClient no lugar da Transferência em Segundo Plano.

 

Como funciona o recurso de transferência em tela de fundo?

Quando um aplicativo usa a Transferência em Segundo Plano para iniciar uma transferência, a solicitação é configurada e inicializada pelos objetos de classe BackgroundDownloader ou BackgroundUploader. Cada operação de transferência é processada individualmente pelo sistema e em separado do aplicativo que fez a chamada. As informações de andamento estão disponíveis se você deseja fornecer ao usuário status na interface de usuário do aplicativo, e seu aplicativo pode pausar, retomar, cancelar ou mesmo ler os dados enquanto ocorre a transferência. O modo como as transferências são processadas pelo sistema promove o uso inteligente de energia e evita os problemas que podem ocorrer quando um aplicativo conectado encontra eventos como, por exemplo, suspensão ou encerramento do aplicativo ou mudanças repentinas de status da rede.

Assista a este vídeo rápido que mostra o download de um arquivo simples usando a Transferência em Segundo Plano.

Aplicativos da Loja do Windows Phone: O meu aplicativo pode usar a Transferência em Tela de Fundo para criar solicitações de arquivos autenticados?

O recurso de Transferência em Segundo Plano oferece métodos que dão suporte a credenciais básicas de servidor e proxy e ao uso de cabeçalhos HTTP personalizados (via SetRequestHeader) para cada operação de transferência.

Como esse recurso se adapta a mudanças de status da rede ou desligamentos inesperados?

O recurso de Transferência em Segundo Plano mantém a integridade de cada operação de transferência quando ocorrem mudanças de status da rede, otimizando de forma inteligente as informações de conectividade e status do plano de dados da operadora, fornecidas pelo recurso Conectividade. Para definir o comportamento dos vários cenários de rede, o aplicativo define uma política de custos para cada operação, usando valores definidos pela BackgroundTransferCostPolicy.

Por exemplo, a política de custos definida para uma operação pode indicar que a operação deverá ser pausada automaticamente quando o dispositivo usar uma rede limitada. A transferência será então retomada (ou reiniciada) automaticamente quando for estabelecida uma conexão com uma rede "irrestrita". Para saber mais sobre como as redes são definidas por custo, veja NetworkCostType.

Embora o recurso de Transferência em Segundo Plano tenha seus próprios mecanismos para tratar as mudanças de status da rede, há outras considerações gerais de conectividade para os aplicativos conectados à rede. Leia Usando as informações de conexão de rede disponíveis para saber mais.

Observação  

Para aplicativos da Loja do Windows Phone, existem recursos que permitem que o usuário monitore e restrinja a quantidade de dados transferidos de acordo com o tipo de conexão, o status de roaming e o plano de dados do usuário. Por isso, as transferências em segundo plano podem ser interrompidas no telefone mesmo quando o BackgroundTransferCostPolicy indicar que a transferência deve continuar.

A tabela a seguir indica quando as transferências em segundo plano são permitidas no telefone para cada valor de BackgroundTransferCostPolicy, dependendo do estado atual do telefone. Você pode usar a classe ConnectionCost para determinar o estado atual do telefone.

Estado do telefone UnrestrictedOnly Padrão Sempre
Conectado ao WiFi Permitido Permitido Permitido
Conexão limitada, sem roaming, sob limite de dados, sob controle para permanecer dentro do limite Negado Permitido Permitido
Conexão limitada, sem roaming, sob limite de dados, sob controle para exceder o limite Negado Negado Permitido
Conexão limitada, roaming, sob limite de dados Negado Negado Permitido
Conexão limitada, acima do limite de dados. Esse estado ocorre somente quando o usuário habilita a opção "Restringir dados em segundo plano na interface do usuário de Data Sense". Negado Negado Negado

 

O RequestUnconstrainedDownloadsAsync e o RequestUnconstrainedUploadsAsync não são permitidos no telefone. As chamadas dessas APIs serão compiladas com êxito, mas falharão no tempo de execução com uma exceção E_NOT_IMPL.

Saiba mais sobre Transferência em Tela de Fundo

Seção Descrição
Transferindo um arquivo de um recurso de rede

Adicione o recurso para baixar e carregar arquivos com segurança no seu aplicativo da Windows Store.

Background Transfer API reference

Documentação de API de todo o namespace do Tempo de Execução do Windows de Tarefa em Segundo Plano.

Exemplo de transferência em tela de fundo

Este exemplo demonstra o comportamento eficiente, econômico e flexível da API de Transferência em Segundo Plano para aplicativos da Windows Store.

 

Tópicos relacionados

Conectando-se a um servidor HTTP usando Windows.Web.Http