Android-AsyncChannel源码分析(补汉6个汉字字).docx
文本预览下载声明
HYPERLINK /shadowliucs/article/detailsndroid AsyncChannel源码分析
目录HYPERLINK /shadowliucs/article/details(?)HYPERLINK /shadowliucs/article/details[-]
HYPERLINK /shadowliucs/article/detailst0同一进程间的Handler连接
HYPERLINK /shadowliucs/article/detailst1不同进程间的Handler连接
HYPERLINK /shadowliucs/article/detailst2消息同步发送
HYPERLINK /shadowliucs/article/detailst3消息异步发送
AsyncChannel类用于处理两个Handler之间的异步消息传递,消息传递的Handler可以出于同一进程,也可以处于不同进程,不同进程之间的Handler消息传递使用Android的Binder通信机制来实现。
1.同一进程间的Handler连接
fullyConnectSync函数建立的是进程内的Handler通信
[java] HYPERLINK /yangwen123/article/detailsview plainHYPERLINK /yangwen123/article/detailscopy
public int fullyConnectSync(Context srcContext, Handler srcHandler, Handler dstHandler) {
int status = connectSync(srcContext, srcHandler, dstHandler);
if (status == STATUS_SUCCESSFUL) {
Message response = sendMessageSynchronously(CMD_CHANNEL_FULL_CONNECTION);
status = response.arg1;
}
return status;
}
[java] HYPERLINK /yangwen123/article/detailsview plainHYPERLINK /yangwen123/article/detailscopy
public int connectSync(Context srcContext, Handler srcHandler, Handler dstHandler) {
return connectSync(srcContext, srcHandler, new Messenger(dstHandler));
}
[java] HYPERLINK /yangwen123/article/detailsview plainHYPERLINK /yangwen123/article/detailscopy
public int connectSync(Context srcContext, Handler srcHandler, Messenger dstMessenger) {
if (DBG) log(halfConnectSync srcHandler to the dstMessenger E);
connected(srcContext, srcHandler, dstMessenger);
if (DBG) log(halfConnectSync srcHandler to the dstMessenger X);
return STATUS_SUCCESSFUL;
}
[java] HYPERLINK /yangwen123/article/detailsview plainHYPERLINK /yangwen123/article/detailscopy
public void connected(Context srcContext, Handler srcHandler, Messenger dstMessenger) {
if (DBG) log
显示全部