0

我想知道环境中的包何时使用 context.registerService(...) 注册服务。

有没有像 FrameworkEvent.STARTED 之类的监听器?

谢谢。

4

2 回答 2

1

监听服务变化在 OSGi 中很常见。普通的 API 方式是使用ServiceTracker。您可以指定您感兴趣的服务,并在此类服务注册或取消注册时获得回调。

推荐的方法是使用像声明式服务 (DS) 或蓝图这样的框架,它们也提供了侦听服务的方法。

这是如何通过使用 DS 的接口侦听所有服务。另请参阅@Reference的 javadoc 。

@Reference(unbind="unbind"
public bind(MyService my) {...}

public unbind(MyService my) {...}
于 2017-04-12T12:31:17.897 回答
0

您可以通过BundleContext#addServiceListener注册ServiceListener 。

对于真实世界的示例,请查看 Gemini Blueprint 框架如何与服务侦听器一起使用:OsgiServiceCollection。有 OsgiServiceCollection$BaseListener 监听器实现。

于 2017-04-12T12:30:39.577 回答