Я использую службу в Android, которая каждые 3 секунды будет загружать JSON. Моя проблема в том, что эта услуга потребляет много батареи и мобильного трафика. Как загрузить информацию, чтобы только если действительно есть новые данные или обновить данные?
Службы в андроиде потребляют много батареи
Ответы (2)
Да, это сильно разряжает батарею. И будет еще больше, если ваш JSON
большой. Я бы определенно использовал здесь какой-то механизм, который посылал бы мне «сигнал» всякий раз, когда это JSON
менялось. Я предполагаю, что это хранится где-то на удаленном сервере, поэтому вы можете использовать Google Cloud Messaging
здесь: всякий раз, когда оно изменяется, ваш удаленный сервер может отправлять устройству сообщение о том, что есть новые данные, доступные для загрузки и загрузки только в это время.
Таким образом, вы не тот, кто спрашивает, но вас информируют, когда появляется что-то новое, поэтому вы не будете разряжать батарею.
Я думаю, это может помочь вам, если вы хотите развернуть GCM
:
Если данные находятся на вашем сервере, вы можете использовать GCM, чтобы уведомить клиентов о том, что доступны новые данные. Получив такое уведомление, загрузите новые данные на устройство. Если данных нет на вашем сервере, вы должны просто периодически извлекать данные. Как это можно сделать? Используйте AlarmManager
для настройки будильника, который начнет загрузку Service
. Обратите внимание, что вы должны использовать setInexactRepeating
, это лучше сэкономит заряд батареи. И последнее замечание: лучше использовать HttpUrlConnection
вместо Apache HTTP Client
для устройств с версией Android >= Gingerbread.