Приложение чата по сравнению с приложением REST - использует поток в Действии или поток в Сервисе?

В разговоре Virgil Dobjanschi, "Разрабатывая Android клиентские приложения REST" (связываются здесь), он сказал несколько вещей, которые застали меня врасплох. Включая:

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

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

  • Остановите свой Сервис, когда Вы будете сделаны с ним.

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

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

Долгий короткий вопрос:

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

1
задан synic 12 June 2010 в 14:57
поделиться

1 ответ

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

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

Всегда выполняйте длительные задачи в Служба, а не в вашей деятельности.

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

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

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

2
ответ дан 2 September 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: