Шаблон обратного вызова удаленного сервиса Android - PullRequest
1 голос
/ 06 января 2012

Я искал в Google возможности обратного вызова клиента из удаленного сервиса. там, где три основных подхода:

  • клиент предлагает AIDL так же, как и сервис (связанный)
  • клиент прослушивает широковещательный приемник (onStartCommand)
  • использование: client-> createPendingResult (), service-> send (), клиент оценивает onActivityResult () (onStartCommand)

Я не нашел этого:

клиентская активность запускается с "singleTop" в манифесте. служба использует context.startActivity (намерение) с ответом в намерении. клиент оценивает onNewIntent (намерение, ..). (OnStartCommand)

Есть ли потенциальные проблемы с этим подходом?

1 Ответ

0 голосов
/ 23 января 2012

Попробуйте следующий учебник:

Учебник по архитектуре Android: разработка приложения с фоновой службой (с использованием IPC)

Мы разработаем здесь:фиктивное приложение, содержащее следующие компоненты:

  1. Фоновая служба, выполняющая что-то важное, но незаметное для пользователя
  2. Одно или несколько действий, которые после запуска пользователем говорятслужбе, управляйте службой и предоставьте некоторую информацию, которую предоставляет служба

Архитектура также имеет следующие характеристики:

  • Служба будет работать в отдельном процессе,разрешение платформе управлять своим жизненным циклом и ресурсами отдельно от действий
  • Предполагается, что служба будет работать постоянно (существуют другие допустимые модели использования служб, но мы не будем обсуждать это здесь)
  • Пользовательский интерфейс (действия) будет получать обновления от службы в режиме обратного вызова или в пассивном режиме, реагируя наo сервисные события вместо опроса сервиса на наличие обновлений.Это очень важно с точки зрения эффективной архитектуры, поэтому, пожалуйста, имейте это в виду на данный момент
  • Поскольку служба будет работать в другом процессе, нам нужно использовать IPC, чтобы общаться с ней из действий.IPC означает межпроцессное взаимодействие и не является термином, специфичным для Android, но у Android есть своя реализация (как мы увидим)
  • Сервис будет все мыслить (бизнес-логика), в то время как пользовательский интерфейс будет спроектирован так, чтобынастолько тонкий и тупой, насколько это возможно.Мы сохраним архитектуру на уровне
  • Служба будет настроена для запуска во время загрузки системы
...