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. |