16:高级篇 - CTK 服务追踪
Posted 一去丶二三里
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了16:高级篇 - CTK 服务追踪相关的知识,希望对你有一定的参考价值。
作者: 一去、二三里
个人微信号: iwaleon
微信公众号: 高效程序员
访问服务
如果构建了一个 LogService 作为服务,并将其注册到服务注册中心。这时要在其它 Plugin 中使用 LogService 来记录日志,你可能会想到这种方式:
- 使用 ctkPluginContext::getServiceReference() 获取服务引用
- 通过 ctkPluginContext::getService() 获取指定 ctkServiceReference 引用的服务对象
然而,这需要编写非常复杂的代码。并且比较麻烦的是,有时想调用 LogService 服务,但它根本不可用!
也许你还会想到 ctkPluginContext::connectServiceListener(),但它是用于监听各种服务的。如果要监听某一种特定服务的话,则需要指定一个 filter,相对比较麻烦。此外,这种方式存在一个问题 - 无法监听到已经存在的 Service。
那么,到底该如何监听某一种特定的服务呢?为此,CTK 提供了一个 ctkServiceTracker 类,它对 Service 的获取要比 ServiceListener 简单许多,并且可以解决不能监听到已经存在的 Service 的问题。
Log 插件
我们需要做的第一件事,是实现 Log 插件,用于提供日志服务。
在这个插件里面,我们定义了一个 LogServi
以上是关于16:高级篇 - CTK 服务追踪的主要内容,如果未能解决你的问题,请参考以下文章
12:高级篇 - CTK 事件管理机制(sendEvent/postEvent)