Eclipse framework之ServiceCaller
本文以eclipse 4.20为参考.
ServiceCaller是不同于ServiceTracker的另一个方便使用service的类.
ServiceCaller的使用
ServiceCaller的使用较简单, *.生成serviceCaller, 构造中指定callerClass, serviceClass, 和filter. *.需要取得serviceObj时, 直接调用 serviceCaller.current(). 或者调用serviceObj时, 使用serviceCaller.call()
ServiceCaller的实现
正常的service使用分作两步, 首先, 取得serviceReference或serviceObj, 然后再使用serviceObj. 整个过程繁琐, 且需考虑service没有注册的情形.
ServiceCaller采用了不同的思路.
在构造时内部保存对service的描述3元<bundle, serviceClass, filter>.
需要使用service时, 1.serviceCaller会使用上述3元描述筛选出serviceReference和serviceObj, 2.保存serviceReference和serviceObj以备后面再次调用时使用, 3.注册serviceListener和bundleListener, 而listener将根据event随时更新该保存.
驽马一架 2021/8/6
|