热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

202184.Eclipseframework之servicetracker

Eclipseframework之servicetracker指定要跟踪的serviceReference关于trackedobjectopen和close本文以eclipse4.


Eclipse framework之service tracker

  • 指定要跟踪的serviceReference
  • 关于tracked object
  • open和close

本文以eclipse 4.20为参考.

serviceTracker相较于serviceListener更方便使用, 从功能上说, 它实际上是 serviceListener + filter.


指定要跟踪的serviceReference

serviceTracker的构造有3种形式, 可以根据需要选择.


  1. 关注特定serviceReference的serviceEvent.
  2. 关注特定class的一类serviceReferences的serviceEvent.
  3. 直接指定filter, 关注匹配该filter的serviceReferences的serviceEvent.

关于tracked object

tracked object是接口ServiceTrackerCutomizer引入的概念.

public interface ServiceTrackerCustomizer {public T addingService(ServiceReference reference);public void modifiedService(ServiceReference reference, T service);public void removedService(ServiceReference reference, T service);
}

ServiceTrackerCutomizer对应了ServiceEvent的几个事件类型. 而addingService()的返回值就是tracked object, 它会回传给modifiedService()和removedService()中. ServiceTracker.Tracked负责保存service object与tracked object的对应关系.

在ServiceTracker的默认实现中, 该tracked object就是service object本身.


open和close

ServiceTracker object需要open()开始跟踪service, close()结束跟踪service.

open()的作用是向serviceRegistry增加filteredServiceListener. filteredServiceListener是带有filter的serviceListener, 当有serviceEvent发布时, filteredServiceListener使用filter过滤, 用匹配的event回调serviceListener(即ServiceTracker.Tracked).

一图胜万言.
在这里插入图片描述

一花一世界 2021/8/4


推荐阅读
author-avatar
我叫柒薇安2001
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有