Osgi 为什么要在addingService(ServiceReference)方法中返回服务实例?

Osgi 为什么要在addingService(ServiceReference)方法中返回服务实例?,osgi,Osgi,在几本书中,他们说取消设置所有getted服务是一种很好的做法,但在我看到的servicetracker实现的每个示例中,都定义了如下方法: @Override public Object addingService(ServiceReference reference) { IQuoteService service = (IQuoteService) context.getService(reference); /* some stuff */ return se

在几本书中,他们说取消设置所有getted服务是一种很好的做法,但在我看到的servicetracker实现的每个示例中,都定义了如下方法:

@Override
  public Object addingService(ServiceReference reference) {
    IQuoteService service = (IQuoteService) context.getService(reference);
    /* some stuff */
    return service;
  }

然后返回服务实例。。。我如何知道/保证此方法返回的实例将永远被解除绑定?

请参阅ServiceTracker和ServiceTrackerCustomizer的源代码和javadoc。默认实现在removedService(…)函数中调用unget:

您应该在ServiceTrackerCustomizer(或继承的ServiceTracker)中以相同的方式实现该功能


然而,ServiceTracker是低级API。只有当您的用例无法用Felix SCR或其任何替代方案解决时,您才需要它。

请参阅ServiceTracker和ServiceTrackerCustomizer的源代码和javadoc。默认实现在removedService(…)函数中调用unget:

您应该在ServiceTrackerCustomizer(或继承的ServiceTracker)中以相同的方式实现该功能


然而,ServiceTracker是低级API。只有当您的用例无法用Felix SCR或其任何替代方案解决时,您才需要它。

请参阅ServiceTracker和ServiceTrackerCustomizer的源代码和javadoc。默认实现在removedService(…)函数中调用unget:

您应该在ServiceTrackerCustomizer(或继承的ServiceTracker)中以相同的方式实现该功能


然而,ServiceTracker是低级API。只有当您的用例无法用Felix SCR或其任何替代方案解决时,您才需要它。

请参阅ServiceTracker和ServiceTrackerCustomizer的源代码和javadoc。默认实现在removedService(…)函数中调用unget:

您应该在ServiceTrackerCustomizer(或继承的ServiceTracker)中以相同的方式实现该功能


然而,ServiceTracker是低级API。只有当您的用例无法用Felix SCR或其任何替代方案解决时,您才需要它。

谢谢!我会进一步调查菲利克斯的!到目前为止,我一直在使用ServiceTracker,谢谢!我会进一步调查菲利克斯的!到目前为止,我一直在使用ServiceTracker,谢谢!我会进一步调查菲利克斯的!到目前为止,我一直在使用ServiceTracker,谢谢!我会进一步调查菲利克斯的!到目前为止,我一直在使用ServiceTracker。