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

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

RongIMClient

这个类里有个接口比较重要,mLibHandler,基本上连接及消息相关的方法都是这个接口中定义的
在这里插入图片描述

在这里插入图片描述可以看到这个mLibHandler接口表面上的赋值是在服务连接成功的回调方法onServiceConnected中实现的,了解Service的原理的话(不懂得话可以去了解下绑定Service的用法),可以想到mLibHandler最终的赋值是在AidlConnection对象所绑定的服务中的onBind方法中实现的,
看下bindService方法的参数,其中Intent可以知道具体的Service,conn就是AidlConnection对象

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

看下mAidlConnection赋值的地方
在这里插入图片描述
服务绑定的地方
在这里插入图片描述
即mLibHandler的最终实现是在RongService中的onBind方法内
在这里插入图片描述

RongIMClient中 IM连接服务器的方法
在这里插入图片描述
知道了mLibHandler的实现类是LibHandlerStub就好多了,可以看下这个类中的connect方法

在这里插入图片描述
最终连接IM服务的地方是
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最终服务的连接是调用的native方法,无法往下跟了,就到这里。
可以看到融云IM中连接是用的一个普通的Service做的

2020年09月03日 21:06 ylxy

猜你喜欢

转载自blog.csdn.net/w690333243/article/details/108392727