将活动绑定到正在运行的服务时未调用onUnbind

时间:2016-02-08 19:37:47

标签: android android-service android-service-binding

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

@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() 被称为:(
  5. 为什么onUnbind()没有被调用?

2 个答案:

答案 0 :(得分:3)

从[{1}}返回true,下次再次致电onUnbind时,不仅会调用bindService,还会调用最后一个客户解除绑定onRebind将由系统调用

答案 1 :(得分:0)

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

只有在您拨打unbindService()后才会停止服务如果没有其他客户端连接到此服务 AND 该服务已启动{{1}用bind打电话。如果服务是以AUTO_CREATE启动的,则服务将不会停止,直到服务调用startService()或android终止它以释放内存