Путаница в привязке сервисов и откреплении Android
Я использую Сервис, чтобы сделать длительный процесс. Я связываю службу в действии, чтобы инициировать процесс. Ниже приведен код, который связывает сервис.
val intent = Intent(context,SaveSessionService::class.java)
context.bindService(intent, mSaveSessServiceConnection, AppCompatActivity.BIND_AUTO_CREATE)
После завершения службы в фоновом режиме, я пытаюсь остановить службу. Я использую stopService(). Но я получаю сообщение об ошибке подключения службы. После прочтения SO вопросов стало известно, что когда служба связана с BIND_AUTO_CREATE, мы не можем остановить службу с помощью stopService.
Мой вопрос заключается в том, как я могу подключиться к службе, так как я также прочитал, что вызов startService для службы, работающей долго, также не рекомендуется. Лучше ли использовать IntentService (я так не думаю, так как только служба должна использоваться для долгосрочной задачи согласно документации)?
Я не могу вернуться к деятельности, как только я пойду в сервис. Я должен быть в состоянии остановить службу от самой службы.
Так с этим вариантом использования, что лучше, чтобы запустить службу с startService или использовать IntentService?
1 ответ
Если вы начали службу с
bindService()
то после звонка он должен автоматически остановитьсяunbindService()
если нет других привязок.Если вы начинаете службу с
startService()
тогда вы должны остановить это сstopService()
или служба может позвонитьstopSelf()
после того, как это сделано. Это часто предпочтительный подход.Если было бы лучше использовать IntentService, зависит от того, какие функции предоставляет сервис - вопрос не содержит каких-либо подробностей по этому поводу.
Как упоминалось ранее, вы можете остановить службу от самой службы с помощью
stopSelf()
как упоминалось ранее