Използвам услуга в android, която на всеки 3 секунди ще изтегля JSON. Проблемът ми е, че тази услуга ми изразходва много батерия и план за мобилни данни. Как да изтегля информация само ако наистина има нови данни или актуализиране на данни?
Услугите в android ми изразходват много батерия
Отговори (2)
Да, това доста изтощава батерията. И ще бъде още повече, ако вашият JSON
е голям. Определено бих използвал някакъв механизъм тук, който да ми изпраща „сигнал“, когато това JSON
се промени. Предполагам, че това се съхранява някъде в отдалечен сървър, така че можете да използвате Google Cloud Messaging
тук: Всеки път, когато се промени, вашият отдалечен сървър може да изпрати на устройството съобщение, което им казва, че има налични нови данни за изтегляне и изтегляне точно по това време.
По този начин вие не питате, но получавате информация, когато има нещо ново, така че няма да изтощавате батерията.
Предполагам, че това може да ви помогне, ако искате да внедрите GCM
:
Ако данните се намират на вашия сървър, можете да използвате GCM, за да уведомите клиентите, че новите данни са налични. След като получите такова известие, изтеглете новите данни в устройството. Ако данните не са на вашия сървър, трябва просто да изтегляте данни периодично. Как може да стане? Използвайте AlarmManager
, за да настроите аларма, която ще започне изтеглянето на Service
. Моля, имайте предвид, че трябва да използвате setInexactRepeating
, това ще спести по-добре батерията. И последната бележка е, че е по-добре да използвате HttpUrlConnection
вместо Apache HTTP Client
за устройства с версия на Android >= Gingerbread.