Я занимаюсь разработкой приложения MusicPlayer, и я использую локальную службу, чтобы сделать MediaPlayer запущенным в фоновом режиме. Кажется, что мы можем либо отправить намерение начать сервис, либо связать службу. Я понимаю смысл startService, мы оставляем его запущенным и отправляем намерение stopService, а для bindService мы возвращаем IBinder для связи с сервисом. Однако мне интересно, что с этим нужно сделать? Должны ли мы отправлять намерения, чтобы они работали? Если я просто получаю статический экземпляр Сервиса и напрямую вызываю его методы, я также могу реализовать как запустить его, так и связаться с ним.Служба Android, нужно ли использовать startService или BindService?
Я нашел пример не использовать startService и bindService, но он отлично работает как простой MusicPlayer.
фрагмент вызовов Услуга: https://github.com/zacharytamas/spotify-sampler/blob/master/app/src/main/java/com/zacharytamas/spotifysampler/ui/PlayerFragment.java
Благодарю вас, я не заметил, что startService().Но эта реализация по-прежнему совсем другая, она использует startService(), но все же взаимодействует с сервисом путем регистрации пользовательских событий, могу ли я сказать, что это еще одна форма IBinder, например, пользовательская реализация EventBus? – dengn
@dengn: «все еще общается с сервисом, регистрируя пользовательские события» - я этого не вижу, извините. «Могу ли я сказать, что это еще одна форма IBinder» - нет. Это всего лишь реализация одноэлементного шаблона. Также, пожалуйста, не предполагайте, что код, который находится на GitHub, обязательно является кодом производственного класса. В этом случае разработчик запускает сервис и никогда не останавливает его. Это нарушает правило с сервисами: [только они работают, когда они активно доставляют ценность пользователю] (https://commonsware.com/blog/2014/07/27/role-services.html). – CommonsWare