Можно ли получать Http-запросы асинхронно на Android?

В основном у меня есть сервер и мобильное приложение. Мобильное приложение подписывается на события с сервера. Затем сервер через некоторое время публикует события для всех подписчиков (да, старый добрый опубликовать / подписаться).

Дело в том, что сервер использует HTTP для отправки уведомлений. Поэтому мне нужно в моем приложении что-то вроде HTTP-сервера для асинхронной обработки этих запросов (то есть без какого-либо специального начального запроса).

Есть ли в наличии какие-либо объекты? Я думаю о создании Socket и Listen to его, но здесь возникает проблема преобразования HTTP из данных Socket. Я уже читал некоторые вопросы по StackOverflow, но ни один из них напрямую не указывает на ту же проблему. Или я что-то упустил? В любом случае, помощь очень приветствуется и ценится.


person 87element    schedule 16.03.2011    source источник
comment
возможный дубликат push-уведомлений на платформе Android   -  person Matthew Willis    schedule 16.03.2011
comment
Хм ... Действительно пропустил этот вопрос. Я должен закрыть это? Они кажутся совершенно идентичными, включая ответы.   -  person 87element    schedule 16.03.2011
comment
Конечно, закрытие кажется разумным.   -  person Matthew Willis    schedule 16.03.2011


Ответы (5)


C2D хорош ... но он все еще находится в стадии бета-тестирования, и вы должны принять Условия использования Google. Я бы реализовал это сам, используя что-то вроде MQTT ... это довольно легко реализовать, быстро и вы управляете данными: http://tokudu.com/2010/how-to-implement-push-notifications-for-android/

person Cristian    schedule 16.03.2011
comment
C2D не является решением, хочу избежать регистрации, и я не могу, на самом деле, изменить сервер и т. Д. Проверю MQTT, спасибо за указание. - person 87element; 16.03.2011

Вам следует изучить Cloud2Device Messaging. Я считаю, что именно так работает GTalk.

person Robby Pond    schedule 16.03.2011

Попробуйте этот ответ о push-уведомлениях через Android Cloud to Device Messaging Framework.

Я не думаю, что вы сможете получать HTTP-запросы или даже что у вашего телефона будет стабильный IP-адрес.

person Matthew Willis    schedule 16.03.2011

Есть два варианта обработки подключений в фоновом режиме ...

AsyncTask и Сервис.

Служба работает как получение текстового сообщения (постоянный опрос не требуется), тогда как AsyncTask будет постоянно опрашивать.

Я думаю, что использование Сервиса - лучший способ, если вы не озабочены производительностью. Я думаю, что может быть задержка в несколько секунд, когда пользователь получает уведомления через службу.

AsyncTask определенно потребляет больше батареи, но, вероятно, будет работать более своевременно и надежно.

person Matt    schedule 16.03.2011

Вы можете использовать PUSH-уведомления или запустить сервер JETTY на вашем Android-устройстве.

У меня есть приложение, работающее точно так же, с сервером JETTY на android.

person Panthro    schedule 16.03.2011