Я пытаюсь углубиться в архитектуру сервиса.
Просто для тестирования я создаю музыкальное приложение.
Без сомнения, музыка должна проигрываться в сервисе, но какой тип связи использовать? Насколько я знаю, служба может быть привязана или запущена (или и то, и другое одновременно)
Во-первых, мне нужно воспроизвести/остановить/приостановить/установить источник...
Во-вторых, мне нужно уведомить пользовательский интерфейс, если музыкальный проигрыватель открыт, о таких событиях, как прогресс, буферизация...
Вот мои мысли по этому поводу.
Я думаю о смешении связанного и запущенного сервиса.
Поскольку песню можно установить только из пользовательского интерфейса, а также приостановить/воспроизвести/остановить/искать, я выбираю связь с сервисом из пользовательского интерфейса с помощью биндера. (Связывание службы внутри активности и возврат связующего для связи со службой)
Уведомления, такие как завершение трека, следующий трек, текущая позиция трека, поступающие от службы. Я решил использовать Broadcast receiver
для отправки таких уведомлений, потому что это может быть несколько заинтересованных компонентов.
Итак, мой вопрос
- Каков наилучший выбор связи (привязанной или широковещательной) для службы музыкального проигрывателя?
- Откуда Система знает, что это за услуга? Я имею в виду, что даже если служба
bound
, мне нужно сначала вызвать методstartService
, а затем связать его. Означает ли это, что если был вызван хотя бы один методbindService
, он считается связанной службой и будет уничтожен при вызове методаunbind
? - Имеет ли смысл
LocalBroadcastManager
общаться со службой? ПосколькуLocalBroadcastManager
является локальным для каждого приложения, почему бы не использовать связанный сервис, чем ? Глобальная трансляция имеет смысл, если другие приложения заинтересованы в событиях.
Помогите пожалуйста разобраться с этим механизмом.