默认
发表评论 4
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] MobileIMSDK用户退出后重新登陆的问题
阅读(46532) | 评论(4 收藏 淘帖1 1

你好,使用MobileIMSDK做用户退出的时候,遇到这种问题,用户首次登录是成功的,当用户退出后再登录就登录不了了。

下面为用户退出时调用的退出代码,如下所示:

loginOutBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 退出IM
                // doLogout();
                // doExit();
                IMClientManager.getInstance(MainActivity.this).release();
                // ClientCoreSDK.getInstance().release();

                //清除用户信息

                //跳转到登陆页面
                Intent intent = new Intent(MainActivity.this,
                        LoginActivity.class);
                startActivity(intent);
                MainActivity.this.finish();
            }
        });


然后看一下release()方法的代码如下:

public void release() {
[color=#ff0000]        ClientCoreSDK.getInstance().release();[/color]
        resetInitFlag();
    }


通过日志看到退出时有错误日志(本地UDP监听停止了(socket被关闭了)输出:

10-17 20:29:32.218 26252-26252/cn.itcss.testim D/LocalUDPDataReciever: 【IMCORE】收到服务端回过来的Keep Alive心跳响应包.
10-17 20:29:33.659 26252-26252/cn.itcss.testim D/LocalUDPSocketProvider: 【IMCORE】正在closeLocalUDPSocket()...
10-17 20:29:33.660 26252-27836/cn.itcss.testim W/art: Long monitor contention with owner Thread-5 (28103) at void java.net 

.DatagramSocket.receive(java.net 

.DatagramPacket)(DatagramSocket.java:-1) waiters=0 in void java.net 

.DatagramSocket.receive(java.net 

.DatagramPacket) for 1.443s
10-17 20:29:33.666 26252-27836/cn.itcss.testim W/LocalUDPDataReciever: 【IMCORE】本地UDP监听停止了(socket被关闭了?),Socket closed
                                                                       java.net 

.SocketException: Socket closed
                                                                           at java.net 

.PlainDatagramSocketImpl.receive0(Native Method)
                                                                           at java.net 

.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:147)
                                                                           at java.net 

.DatagramSocket.receive(DatagramSocket.java:808)
                                                                           at transform.core.LocalUDPDataReciever.p2pListeningImpl(LocalUDPDataReciever.java:110)
                                                                           at transform.core.LocalUDPDataReciever.access$100(LocalUDPDataReciever.java:36)
                                                                           at transform.core.LocalUDPDataReciever$1.run(LocalUDPDataReciever.java:85)
                                                                           at java.lang.Thread.run(Thread.java:761)


按道理讲这样写退出代码没错吧,为啥退出时有错误呢?并且再次登录是登录不了的。

你知道是哪里有问题吗?

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

标签:MobileIMSDK
上一篇:我的程序有一个swt写的界面 当界面关闭时 这个框架还在发送心跳消息?下一篇:[已回复] 我的IM程序心跳包自动停止了,不能继续发送相关数据了。

本帖已收录至以下技术专辑

推荐方案
评论 4
你看看这个帖子:
[已解决] MobileIMSDK 安卓客户端退出登入后重新登入问题

确保你的代码是取的github里最新的版本,当前最新版里已经解决了这个问题了。你对照一下Demo和Lib源码就可以看出改了什么。

最后,关于close的异常问题,你看看我在这个帖子里的2楼回复:
[已解决] 使用安卓端MobileIMSDK,退出时总报socket closed异常,这什么情况?
引用:JackJiang 发表于 2017-10-17 20:53
你看看这个帖子:
《[已解决] MobileIMSDK 安卓客户端退出登入后重新登入问题》

确定代码是最新的,才开始的时候MobileIMSDK3还没出来的,后来刚好那几天看你的这个新版本20170718的出来了就用它的。
刚刚又把本地的SDK和GitHub上面的MobileIMSDK最新版整个比较了一下确定本地已是最新版。

还有因为调用了ClientCoreSDK.getInstance().release(),可以确定init已设置为flase。
但还是报这个错误,这个应该没啥影响吧。
引用:dzl2005328 发表于 2017-10-18 09:51
确定代码是最新的,才开始的时候MobileIMSDK3还没出来的,后来刚好那几天看你的这个新版本20170718的出来 ...

报错没一点影响,你可以看看我在2楼的回复。

你上次退出出relase了,下次整个IMClientManager.getInstance(this).initMobileIMSDK(); 都要重新调用一遍。你对着Demo代码仔细理解一下。
引用:JackJiang 发表于 2017-10-18 10:34
报错没一点影响,你可以看看我在2楼的回复。

你上次退出出relase了,下次整个IMClientManager.getInst ...

好的
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部