我使用的是OSGi框架Knopflerfish,既然我现在可以通过注册服务来调用包来做一些事情,我需要删除服务吗?
因为我找不到任何方法来删除该服务。通过检查BundleContext中长度为"getAllService()“和ServiceTracker.getServices()的服务,我可以看到服务的总数正在增加,甚至我调用了"ungetService(ServiceReference)”。
那么,是否有必要删除该服务,或者"ungetService“就足够了?如果有必要,如何删除该服务?
发布于 2016-01-28 17:46:41
ungetService不是registerService的对立面,它是getService的对立面,也就是消费者进行的调用。
如果使用registerService方法注册服务,它将返回一个ServiceRegistration对象。当您不再希望您的服务对使用者可用时,您应该对该对象调用unregister方法。请注意,如果您的捆绑包停止,它注册的任何服务都将自动注销。
但是,我想知道您是否真的应该深入研究最低级别的OSGi API。对于99%的用例,您应该使用更高级别的框架,如声明性服务。这将为您省去很多痛苦,还会使您的代码更可靠、更具可读性。
https://stackoverflow.com/questions/35055405
复制相似问题