我有这个活动启动并绑定到服务:
@Override
protected void onStart() {
super.onStart();
Intent intent = new Intent(context, SoundService.class);
context.startService(intent);
context.bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
}
我通过以下方式解绑:
@Override
protected void onStop() {
context.unbindService(serviceConnection);
super.onStop();
}
即使在关闭活动后,该服务仍会继续运行。 请看这个场景:
- 活动启动服务并绑定到它
- 活动被终止,服务继续运行,
onUnbind()
被调用 - 活动再次启动,并绑定到正在运行的服务
- 活动被杀死,
onUnbind()
不被称为:(
为什么不调用onUnbind()
?
从onUnbind
返回true
,下次如果您再次调用bindService
不仅会调用onRebind
而且当最后一个客户端解除绑定时也会被系统调用onUnbind
你是如何开始服务的?请粘贴该代码。
只有在您调用unbindService()
后,如果没有其他客户端连接到此服务,并且该服务是通过bind
AUTO_CREATE
调用启动的,服务才会停止。如果服务是用startService()
启动的,则在服务调用stopSelf()
或 android 终止服务以释放内存之前,该服务不会停止