融云IM SDK 4.0.0.3源码分析(IM服务器的连接)

小编最近研究了融云IM的demo,想学习的可以去下载看下
这里讲下比较关键的类

RongIMClient

这个类里有个接口比较重要,mLibHandler,基本上连接及消息相关的方法都是这个接口中定义的
融云IM SDK 4.0.0.3源码分析(IM服务器的连接)_第1张图片

融云IM SDK 4.0.0.3源码分析(IM服务器的连接)_第2张图片可以看到这个mLibHandler接口表面上的赋值是在服务连接成功的回调方法onServiceConnected中实现的,了解Service的原理的话(不懂得话可以去了解下绑定Service的用法),可以想到mLibHandler最终的赋值是在AidlConnection对象所绑定的服务中的onBind方法中实现的,
看下bindService方法的参数,其中Intent可以知道具体的Service,conn就是AidlConnection对象

bindService(@RequiresPermission Intent service,
            @NonNull ServiceConnection conn, @BindServiceFlags int flags)

看下mAidlConnection赋值的地方
融云IM SDK 4.0.0.3源码分析(IM服务器的连接)_第3张图片
服务绑定的地方
融云IM SDK 4.0.0.3源码分析(IM服务器的连接)_第4张图片
即mLibHandler的最终实现是在RongService中的onBind方法内
融云IM SDK 4.0.0.3源码分析(IM服务器的连接)_第5张图片

RongIMClient中 IM连接服务器的方法
融云IM SDK 4.0.0.3源码分析(IM服务器的连接)_第6张图片
知道了mLibHandler的实现类是LibHandlerStub就好多了,可以看下这个类中的connect方法

融云IM SDK 4.0.0.3源码分析(IM服务器的连接)_第7张图片
最终连接IM服务的地方是
融云IM SDK 4.0.0.3源码分析(IM服务器的连接)_第8张图片
融云IM SDK 4.0.0.3源码分析(IM服务器的连接)_第9张图片
融云IM SDK 4.0.0.3源码分析(IM服务器的连接)_第10张图片
融云IM SDK 4.0.0.3源码分析(IM服务器的连接)_第11张图片
融云IM SDK 4.0.0.3源码分析(IM服务器的连接)_第12张图片
最终服务的连接是调用的native方法,无法往下跟了,就到这里。
可以看到融云IM中连接是用的一个普通的Service做的

2020年09月03日 21:06 ylxy

你可能感兴趣的:(即时通讯)