Android: лучший способ справиться с непрерывным вытягиванием с сервера? - PullRequest
1 голос
/ 21 марта 2012

Прежде всего, я должен отметить, что я новичок в Android (не так уж много опыта в Java вообще), поэтому будьте осторожны со мной.

Я делаю приложение, которое постоянно тянетданные с сервера, а затем возвращает данные через запрос HTTP post.Вопрос в том, как лучше всего справиться с фактическим вытягиванием с сервера?Должен ли я использовать AsyncTask или создать другой поток и позволить ему работать на этом?Есть ли лучшие методы для этой цели?

Я буду получать данные каждые 5 минут.(Я знаю, что это очень быстро разряжает батарею, и я должен определенно использовать платформу Android C2DM. Но у меня нет опыта в этом раньше, и я нахожусь в крайнем сроке, так что это придется делать, пока у меня не будет временичтобы научиться это реализовывать.)

Я благодарен за любой совет!

Ответы [ 2 ]

2 голосов
/ 21 марта 2012

В качестве альтернативы C2DM вы можете установить постоянное TCP-соединение между вашим устройством и сервером.Затем каждые 5 минут ваш сервер может нажать на устройство.После получения уведомления устройство может запросить информацию через сообщение Http.

Ниже приведен пример кода, позволяющего это сделать. Соединение остается открытым в фоновом потоке даже после выхода из приложения

Создание и управление постоянным сокетом TCP: http://openmobster.googlecode.com/svn/trunk/cloud/android/connection/src/main/java/org/openmobster/core/mobileCloud/android/module/connection/NotificationListener.java

Полное раскрытие: я главный инженер OpenMobster и написал этот код.Пожалуйста, не стесняйтесь использовать все, что вам нравится или просто получить представление, если это то, что вам нужно

Спасибо

0 голосов
/ 21 марта 2012

Вам нужно вытащить данные в фоновом режиме (даже если ваше приложение не «открыто» и устройство Android спит)?Я полагаю, это то, что вы хотите, потому что вы упомянули C2DM.Если это так, то модными словами являются AlarmManager (с повторяющимся временем) / BroadCastReceiver и, возможно, NotificationManager для уведомления пользователя.С AlarmManager вы планируете свои события (каждые 5 минут), а с BroadcastReceiver вы получаете эти события и делаете то, что вы хотите делать каждые 5 минут:)

...