on取消绑定时未调用活动到正在运行的服务



我有这个活动启动并绑定到服务:

@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();
}

即使在关闭活动后,该服务仍会继续运行。 请看这个场景:

  1. 活动启动服务并绑定到它
  2. 活动被终止,服务继续运行,onUnbind()被调用
  3. 活动再次启动,并绑定到正在运行的服务
  4. 活动被杀死,onUnbind()被称为:(

为什么不调用onUnbind()

onUnbind返回true,下次如果您再次调用bindService不仅会调用onRebind而且当最后一个客户端解除绑定时也会被系统调用onUnbind

你是如何开始服务的?请粘贴该代码。

只有在您调用unbindService()后,如果没有其他客户端连接到此服务,并且该服务是通过bind AUTO_CREATE调用启动的,服务才会停止。如果服务是用startService()启动的,则在服务调用stopSelf()或 android 终止服务以释放内存之前,该服务不会停止

最新更新