Smack Connect 中的 connectionEstablishedListeners 属性用法及其作用

来源:互联网 发布:新店淘宝客推广 编辑:程序博客网 时间:2024/06/14 20:56



一、简介

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 的引用都不需要对原有代码做改动。



http://blog.csdn.net/teamlet/article/details/25870453


0 0