Android:如何使用BIND_AUTO_CREATE选项停止bindService()启动的服务?

jcl*_*ova 6 service android bind

我开始使用以下服务:

private ServiceConnection _serviceConnection = new ServiceConnection() {...}
bindService(new Intent(this, MainService.class), _serviceConnection, Context.BIND_AUTO_CREATE);
Run Code Online (Sandbox Code Playgroud)

我想"重新启动"该服务.(我们不要争论为什么我要这样做)我这样做:

unbindService(_serviceConnection);
// Do some initialization on service
bindService(new Intent(this, MainService.class), _serviceConnection, Context.BIND_AUTO_CREATE);
Run Code Online (Sandbox Code Playgroud)

我注意到服务没有死(onDestroy不运行),直到我调用下一个bindService(); 因此,我在服务上做的一些静态初始化已被onDestroy()实现清除.

问题:如何确保unbindService()将停止服务(运行onDestory()),以便我可以在重新运行bindService()之后进行初始化?

Com*_*are 5

问题:您如何确保 unbindService() 将停止服务(运行 onDestory()),以便我可以在之后进行初始化并重新运行 bindService()?

onDestroy()最后一个之后的时间unbindService()是不确定的,当然是异步的。您也可以尝试调用stopService()自己,但这也是异步的,因此您不知道它何时会停止。

我不知道有什么可靠的方法可以让您使用绑定模式“重新启动”服务。


Tim*_*Ohr 5

即使在调用unbindService或之后,Android 也会自行决定保留服务stopService

如果您需要立即在服务端重新初始化一些数据,您很可能需要提供一个服务方法来执行此操作。