Ответ 1
Используйте startService()
для служб, которые будут запускаться независимо после их запуска. Хорошим примером являются музыкальные проигрыватели. Они запускаются до тех пор, пока они не назовут stopSelf()
, или кто-то вызовет stopService()
.
Вы можете общаться с запущенной службой, отправляя Intents туда и обратно, но по большей части вы просто запускаете службу и позволяете ей запускаться самостоятельно.
Используйте bind()
, когда служба и клиент будут взаимодействовать друг с другом по постоянному соединению. Хорошим примером является навигационная служба, которая будет передавать обновления местоположения обратно клиенту. Связи гораздо сложнее писать, чем намерения, но они действительно подходят для этого случая использования.
Относительно приоритета: когда все действия процесса теряют видимость, процесс становится сервисом, если он размещает службу, которая была запущена с помощью onStart()
, в противном случае она становится фоновым процессом. Процессы обслуживания имеют более высокий приоритет, чем фоновые процессы. Более подробную информацию можно найти на сайте разработчика Android.
Если для процесса обслуживания без видимой активности требуется более высокий приоритет (например, музыкальный проигрыватель, который действительно не должен прерываться), служба может вызвать startForeground()
.