一、简介
Connection是一个抽象类,由XmppConnection继承。Connection 提供了一些监听器负责对数据进行分法处理。
本文介绍的是 connectionEstablishedListeners 属性,这个属性及其方法为获取 Connection 提供了简单、灵活的途径。
二、说明
connectionEstablishedListeners 是Connect中的一个属性,针对这个属性提供了三个静态方法:
1、addConnectionCreationListener(ConnectionCreationListener connectionCreationListener)
2、 getConnectionCreationListeners()3、removeConnectionCreationListener(ConnectionCreationListener connectionCreationListener)
参数说明: ConnectionCreationListener 是一个接口,声明了一个方法:
public void connectionCreated(Connection connection);
三、作用
如果有一些类,需要使用 connetion ,只要实现 ConnectionCreationListener 接口,并调用 addConnectionCreationListener()注册到 connection 种,
就可以在 connectionCreated 方法中获得 connection .
四、用法
1、实现 ConnectionCreationListener 接口
ConnectionCreationListener myListener = new ConnectionCreationListener() {
public void connectionCreated(Connection connection) {
ServiceManager.setServiceEnabled(connection, true);
}
}
2、使用的时候加入listener队列
Connection.addConnectionCreationListener(myListener);
3、不用的时候从队列中移除
removeConnectionCreationListener(myListener);
4、系统启动时机
在 packetWriter 和 packetReader 线程启动后,连接成功,是第一次初始化,会把connection 分发给所有通过 addConnectionCreationListener 加入 connection 的 listener 。
packetWriter.startup();
packetReader.startup();
connected = true;
if (isFirstInitialization) {
for (ConnectionCreationListener listener : getConnectionCreationListeners()) {
listener.connectionCreated(this);
}
}
这种机制为系统扩展提供了便利,在任何时候,需要增加对 connection 的引用都不需要对原有代码做改动。