Каква е най-добрата практика за извършване на работа след получаване на C2DM съобщение?

Може ли някой да обясни общия начин за работа с C2DM намерения?

Имам приложение, което извършва интелигентно анкетиране - по същество е приложение за съобщения - така че анкетира сървъра, за да провери входящата ви кутия за нови съобщения. Има потребителски интерфейс за активност и фонова услуга, която анкетира консервативно.

Сега, за да допълня анкетата, включих C2DM - вероятно, за да изпратя съдържанието на входящата кутия, което стои непрочетено в продължение на 30 минути.

Така че, когато получа C2DM RECEIVE намерение, аз казвам на моята фонова услуга да направи анкета.

Как ще работи това?

Предполагам, че основният случай на използване на C2DM е "неактивен" телефон (т.е. в джоба ви, екранът е изключен). Така че получавате намерение RECEIVE, хващате wake lock и активирате фоновата услуга, за да отидете на анкета; връщане на wake lock, след като изпратите намерение към фоновата услуга.

Колко дълго ще остане жива фоновата услуга?

Android няма ли просто да го убие веднага?

Трябва ли просто да се опитам да направя 1 сървър ping и след това да умра?

Просто съм объркан относно това колко обработка мога да направя, след като получа C2DM намерение.


person paulpooch    schedule 04.04.2012    source източник
comment
едно напомняне за всеки случай. C2DM не е наличен за Amazon App store.   -  person Win Myo Htet    schedule 04.04.2012


Отговори (1)


Подходът, който предлагате, звучи солидно. Използването на C2DM като начин за допълване на анкетирането е добър подход. C2DM сам по себе си не е 100% надежден (никога няма да бъде) и вашият дизайн предпазва от това.

Услугата ще работи до приключване на работата си. Очаквам да покаже известие на потребителя или да актуализира списък със съобщения.

Бих настроил услугата да прави повторен опит с експоненциално отстъпване и да опита X пъти, преди да се провали. Ако не успее, следващия път, когато се появи анкета, тя ще бъде актуализирана. Не бих искал фоновата услуга да се опитва твърде дълго, тъй като това е, което трябва да прави избирателният код.

Услугата ви ще продължи, освен ако операционната система не се нуждае от памет. Можете да принудите услугата да бъде услуга на преден план (с икона за известяване), но не очаквам това да е необходимо.

Предполагам, че вашата услуга проверява редовно услугата, така че ще компенсира всеки неуспех в C2DM съобщението, за да направи заявка към сървъра.

person Ollie C    schedule 05.04.2012
comment
Текущата ми реализация е основно onC2dmMessage(просто започнете да избирате отново). Трябва ли услугата да се прекрати сама или мога да разчитам на операционната система просто да я убие сама.? - person paulpooch; 09.04.2012
comment
Не съм сигурен какво имаш предвид. Ако бях аз, щях да имам анкета, която да работи през цялото време и след това C2DM съобщенията да се обработват с помощта на отделна краткотрайна услуга. - person Ollie C; 09.04.2012