我正在使用Service来执行长时间运行的过程。我在活动中绑定服务以启动该过程。下面是绑定服务的代码。
val intent = Intent(context,SaveSessionService::class.java)
context.bindService(intent, mSaveSessServiceConnection, AppCompatActivity.BIND_AUTO_CREATE)
服务在后台完成后,我试图停止服务。我正在使用stopService()。但我得到活动泄漏服务连接错误。在对SO Questions进行一些阅读之后,了解到当服务与BIND_AUTO_CREATE绑定时,我们无法使用stopService停止服务。
我的问题是如何连接服务,因为我还读到,为长时间运行服务调用startService也是不可取的。使用IntentService是否更好(我不这么认为,因为根据文档,只有服务应该用于长时间运行的任务)?
一旦我转到服务,我就无法参考活动。我应该可以从服务本身停止服务。
使用这个用例,哪个更好,用startService启动服务还是使用IntentService?
答案 0 :(得分:0)
如果您已使用bindService()
启动了该服务,则在您没有其他绑定的情况下调用unbindService()
后该服务应自动停止。
如果您使用startService()
启动服务,则应使用stopService()
停止服务,否则服务可在完成后调用stopSelf()
。这通常是首选方法。
如果最好使用IntentService取决于服务提供的功能 - 问题没有任何关于此的详细信息。
如前所述,如前所述,您可以使用stopSelf()
停止服务本身的服务