Услугите в android ми изразходват много батерия

Използвам услуга в android, която на всеки 3 секунди ще изтегля JSON. Проблемът ми е, че тази услуга ми изразходва много батерия и план за мобилни данни. Как да изтегля информация само ако наистина има нови данни или актуализиране на данни?


person user3236034    schedule 30.04.2014    source източник
comment
Бих казал, че намалете интервала на изтеглянията до нещо по-разумно, като половин час до 2 часа... защо изпитва нужда да изтегля JSON на всеки три секунди?   -  person Makoto    schedule 30.04.2014
comment
Благодаря, защото трябва да направя нещо подобно на приложение в реално време, тъй като всички потребители могат да видят данните веднага, когато всеки потребител направи промяна, някои се равняват на стая за чат   -  person user3236034    schedule 30.04.2014


Отговори (2)


Да, това доста изтощава батерията. И ще бъде още повече, ако вашият JSON е голям. Определено бих използвал някакъв механизъм тук, който да ми изпраща „сигнал“, когато това JSON се промени. Предполагам, че това се съхранява някъде в отдалечен сървър, така че можете да използвате Google Cloud Messaging тук: Всеки път, когато се промени, вашият отдалечен сървър може да изпрати на устройството съобщение, което им казва, че има налични нови данни за изтегляне и изтегляне точно по това време.

По този начин вие не питате, но получавате информация, когато има нещо ново, така че няма да изтощавате батерията.

Предполагам, че това може да ви помогне, ако искате да внедрите GCM:

person nKn    schedule 30.04.2014
comment
Благодаря ви много, ще опитам това, което препоръчвате - person user3236034; 30.04.2014

Ако данните се намират на вашия сървър, можете да използвате GCM, за да уведомите клиентите, че новите данни са налични. След като получите такова известие, изтеглете новите данни в устройството. Ако данните не са на вашия сървър, трябва просто да изтегляте данни периодично. Как може да стане? Използвайте AlarmManager, за да настроите аларма, която ще започне изтеглянето на Service. Моля, имайте предвид, че трябва да използвате setInexactRepeating, това ще спести по-добре батерията. И последната бележка е, че е по-добре да използвате HttpUrlConnection вместо Apache HTTP Client за устройства с версия на Android >= Gingerbread.

person nikis    schedule 30.04.2014
comment
Благодаря ви много, ще опитам това, което препоръчвате. - person user3236034; 30.04.2014