Приложение чата против приложения REST - использовать поток в действии или поток в службе? - PullRequest
1 голос
/ 12 июня 2010

В выступлении Вирджила Добьянски «Разработка клиентских приложений REST для Android» (ссылка здесь ) он сказал несколько вещей, которые застали меня врасплох.В том числе:

  • Не запускайте http-запросы в потоках, созданных вашими действиями.Вместо этого, свяжитесь со службой, чтобы сделать их, и сохраните информацию в ContentProvider.Используйте ContentObserver, чтобы получать уведомления об изменениях.

  • Всегда всегда выполняйте длительные задачи в Сервисе, но никогда в своей Активности.

  • Остановите службу, когда закончите.

Я понимаю, что он говорил о REST API, но я пытаюсь привести его в соответствие с некоторыми другими идеями.Я имел для приложений.Один из используемых мной API-интерфейсов использует длинный опрос для своего интерфейса чата.Существует цикл HTTP-запросов, большинство из которых будет зависать.

Это означает, что до тех пор, пока приложение не будет убито ОС или пользователь специально не отключил функцию чата, с Сервисом у меня никогда не закончится, и это будетоставайся открытым навсегда.Это кажется менее чем оптимальным.

Короткий вопрос:

Для приложения чата, которое использует длинный опрос для имитации push-запроса и немедленного ответа, все же рекомендуется использовать Сервис для выполнения запросов HTTP, ихранить информацию в ContentProvider?

1 Ответ

2 голосов
/ 12 июня 2010

Не запускайте http-запросы в потоках, созданных вашими действиями.Вместо этого, свяжитесь со службой, чтобы сделать их, и сохраните информацию в ContentProvider.Используйте ContentObserver, чтобы получать уведомления об изменениях.

Мне еще предстоит просмотреть презентацию, хотя я просмотрел слайды.У меня есть серьезные оговорки в отношении ContentProvider части предложенной архитектуры.

Всегда выполняйте долгосрочные задачи в Сервисе, а не в своей Деятельности.Пэт "всегда" и "никогда" заявления, включая меня.Я бы не стал помещать это в категорию «всегда».Использование Service в качестве домашней базы для долгосрочных задач - хорошая стратегия, но у нее тоже есть свои проблемы (например, при повороте экрана unbindService() уничтожит Service до того, как следующий bindService() начнет действовать, если нет других связанных подключений, оставляя вас с бобами и блоками учета соединений, если у вас сложное приложение).

Для приложения чата, которое использует длинный опрос для имитации push-запроса и немедленного ответа, все же рекомендуется использовать Службу для выполнения HTTP-запросов и сохранять информацию в ContentProvider?

Это практика.ИМХО, жюри все еще очень много о том, является ли это лучшей практикой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...