AsyncChannel在Dctracker和dataconnection, NetworkFactory和ConnectivityService之间完成对应的通信,在数据业务中起到了非常重要的作用.

1.以Dctracker和dataconnection为例子:

Messenger.send(Message message)

/**

* ``Send a Message to this Messenger's Handler.// messager.send就是发送消息到对应的hander里面,在创建对应的messager的时候会传入相应的Handler.

* @param message The Message to send. Usually retrieved through

* {@link Message#obtain() Message.obtain()}.

* @throws RemoteException Throws DeadObjectException if the target

* Handler no longer exists.

*/

public void send(Message message) throws RemoteException {

mTarget.send(message);

}

创建AsyncChannel和建立full connection过程:

建立数据业务bringUp过程:

NetworkFactory的注册过程.

总结下:关于AsyncChannel的使用就是注册填充mSrcHandler,mSrcMessenger,mDstMessenger的过程.如果通过messenger.send发送消息就是发送到初始化messenger对象时填入的对应的Handler对象.

/** Handler for source */
private Handler mSrcHandler;
/** Messenger for source */
private Messenger mSrcMessenger;
/** Messenger for destination */
private Messenger mDstMessenger;

results matching ""

    No results matching ""