我使用以下方式开始服务:
private ServiceConnection _serviceConnection = new ServiceConnection() {...}
bindService(new Intent(this, MainService.class), _serviceConnection, Context.BIND_AUTO_CREATE);
我想'重启'这项服务。 (我们不要争论为什么我要那样做) 我是这样做的:
unbindService(_serviceConnection);
// Do some initialization on service
bindService(new Intent(this, MainService.class), _serviceConnection, Context.BIND_AUTO_CREATE);
我注意到服务没有死(onDestroy不运行),直到我调用下一个bindService(); 因此,我在服务上做的一些静态初始化已被onDestroy()实现清除。
问题:如何确保unbindService()将停止服务(运行onDestory()), 以便我可以在重新运行bindService()后进行初始化?
答案 0 :(得分:4)
问题:如何确保unbindService()将停止服务(运行onDestory()),以便我可以在重新运行bindService()之后进行初始化?
onDestroy()
之后unbindService()
的时间是不确定的,当然是异步的。您也可以尝试自己调用stopService()
,但这也是异步的,因此您不知道何时会停止它。
我不知道使用绑定模式“重启”服务的可靠方法。
答案 1 :(得分:4)
即使在致电unbindService
或stopService
之后,Android仍可自行决定是否保留服务。
如果您需要立即重新初始化服务端的某些数据,您很可能需要提供一种服务方法。
答案 2 :(得分:0)
如果在onUnbind()中返回true,则可以使用onRebind()。
见这里: http://developer.android.com/guide/components/bound-services.html