API RemoteService путаницы - PullRequest
       10

API RemoteService путаницы

1 голос
/ 31 августа 2010

Я пытаюсь создать приложение, насыщенное REST.

Следуя одной из моделей, предложенных Вирджилом в его презентации Google I / O, я настроил свое приложение так:

Моя активность требует "помощника по обслуживанию", который является одиночным. Этот синглтон создает экземпляр Сервиса, который при запуске использует ContentProvider для обращения к базе данных моего приложения и запускает поток для доступа к веб-сервису для любой подходящей синхронизации. Последний кусок, который мне сейчас нужен, - это обратный вызов Service для синглтона, который вызывает любые прослушивания.

Это часть, в которой я запутался.

Прямо сейчас я смотрю на предоставляемый Android SDK RemoteService ApiDemo. В RemoteServiceBinding.java член IRemoveService объявлен как mService. mService используется в различных обработчиках для обработки обратных вызовов.

Однако этот код будет добавлен в мой Service Helper (помните, что это одиночный код). В этот класс может быть N вызовов для запуска Сервисов для функций базы данных и веб-сервисов. Я не могу просто объявить 1 переменную с именем mService, верно? RemoteService объявляет ISecondaryService, но у меня может быть N кодов, вызывающих этот синглтон. Это должно быть динамично.

Ex:

  • Пользователь находится на Деятельности A и хочет показать вещи в списке. Удар по одиночке Service Helper, возвращает курсор и запускает службу, которая запрашивает у веб-службы новые вещи . mService создается для обработки обратных вызовов для этого экземпляра службы.
  • До того, как эта Служба будет завершена, пользователь переключается на Занятие B и делает то же самое для вещей в списке Занятия. mService уже создан для предыдущего экземпляра службы. Что мне теперь делать?
  • Предположим, что соединение было медленным, и пользователь мог сделать это в течение 20 действий, прежде чем первый завершил получение новых вещей . mService уже создан для предыдущего экземпляра службы. Что мне делать сейчас ?????

Что мне здесь делать? Я в растерянности.

Было бы действительно здорово, если бы приложение Twitter уже было открыто ...

1 Ответ

0 голосов
/ 15 мая 2011

Я не знаю, где вы остановились на этом, но если бы вы использовали IntentService, нужно было бы создать только одну Службу, и этот IntentService поместил бы новые вызовы Context#startService(Intent i) в очередь.

Поскольку один IntentService обрабатывает очередь, они будут обрабатываться в методе onHandleIntent(Intent i) вашего IntentService. В этом методе вы могли бы извлечь дополнительные данные из переданного Намерения, чтобы точно выяснить, как обрабатывать требования, установленные вызывающей деятельностью.

...