Meu aplicativo para Android tem um ContentProvider
e armazena dados (strings) em uma tabela SQLite Essas linhas precisam ser enviadas para um servidor da Internet
Quero que esses dados sejam carregados em segundo plano quando o host remoto estiver disponível (Wi-Fi ativado, por exemplo)
Os dados devem ser enviados o mais rápido possível (quando a rededisponível, é claro) sem interferir na interface do usuário do meu aplicativo Ele deve ser enviado mesmo quando meu aplicativo não tiver o foco principal (o usuário pode estar usando o sms ou usando a câmera)
Novos dados podem ser adicionados à tabela (fila de saída) a cada 5 segundos
P: Devo usar um serviço em segundo plano para enviar as linhas não enviadas?
Parece muito frequente usar o "Serviço de Alarme", mas posso estar errado
A vida útil da bateria é a minha principal preocupação, mas, em segundo lugar, é preciso enviar o mais rápido possível (ou logo após a Internet disponível)
Android Studio API de segmentação 17+
Respostas:
0 para resposta № 1Um serviço em segundo plano seria melhor para lidar com osolicitar e economizar bateria. Você pode verificar o estado da conexão e enviar a si mesmo e deixar o serviço funcionar quando não há conexão, ou melhor ainda, usar o serviço para sempre enviar os dados e decidir quando enviar.
Quanto ao serviço, veja esta pergunta: Como ser notificado sobre alterações no status da rede wifi?
A idéia seria usar o código nessa respostaimplementar um receptor de transmissão em seu serviço para detectar quando há uma conexão disponível. Quando essa conexão estiver disponível, você poderá enviar os dados.