Итак, я работаю с локальной службой, и я хотел бы, чтобы активность посылала службе некоторые команды. Помимо запуска и остановки, мне также хотелось бы приостановить или перезапустить команду для активности, которую выполняет моя служба (команды здесь не так важны, просто приводя их в качестве примеров.Локальная служба привязки в Android - использовать ... или не использовать?
Я думаю, что привязка к сервис будет правильный способ сделать это, но я не уверен в двух вещах.
андроид документы говорят, что развязывание от службы будет убить его. что делать, если я хочу, чтобы моя служба работать в фоновом режиме ... тогда, когда моя активность onCreate() s я хочу связать с Сервисом (для управления им/отправкой его команд) и onDestroy(), я хотел бы отменить действие из службы, но продолжаю работу службы.
У меня возникли проблемы с пониманием этот отрывок из книги Big Nerd Ranch по разработке Android
Этот шаблон выглядит интересно. Это единственное место в Android, которое позволяет одному компоненту Android напрямую разговаривать с другим. Однако мы не рекомендуем . Поскольку сервисы - это эффективные синглтоны, то они используют , поэтому они не дают больших преимуществ только при использовании одноточечного .
По существу, я говорю, что привязка - это api, которая просто делает вещи слишком сложными, чтобы действительно использовать для локальной службы?
Спасибо за ответ. Я хотел бы держаться подальше от eventbus libs (пока), но настроить LocalBroadcastReciever кажется прекрасным для Service -> Activity, но как вы порекомендовали Activity -> Service commands? С помощью функции startService() снова? – EGHDK
@EGHDK: «но настройка LocalBroadcastReciever кажется прекрасной для Сервиса» - если вы хотите работать с структурами «Intent», и вы хотите, чтобы результаты всегда доставлялись по основному потоку приложения, «LocalBroadcastManager» в порядке. «Как бы вы порекомендовали Activity -> Service commands?» С помощью функции startService() снова? » -- конечно. – CommonsWare
Еще две вещи! 1. Чтобы быть уверенным, что вы говорите startService() с другим Intent дополнительным, как команда, правильно? Потому что тогда onCreate не будет вызван, но onStartCommand будет вызван, и я могу по существу использовать его как метод маршрутизатора. 2. «ничто не вызвало startService() в сервисе, чтобы он работал таким образом« Подождите, я знаю, что могу просто зарегистрировать это, но даже прочитав документы, я думал, что onBind все равно вызовет onStartCommand() – EGHDK