默认
发表评论 6
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] MobileIMSDK 的Java客户端无法正确结束程序
阅读(47287) | 评论(6 收藏 淘帖
在登录成功事件中调用new LocalUDPDataSender().sendLoginout();导致客户端程序无法正确退出.会一直卡在LocalUDPDataReciever的p2pListeningImpl方法中一直等待来自服务端的消息.


LocalUDPDataReciever的stop方法调用this.thread.interrupt()根本毫无意义.没法真正停止线程.


如果想正确退出应该如何做?

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

标签:MobileIMSDK
上一篇:[已回复] 求教MobileIMSDK的服务端监听回调会卡死的情况下一篇:[已解决] MobileIMSDK服务端没有拒绝Java客户端登陆的功能
推荐方案
评论 6
为什么登陆成功又去调用退出方法?不太理解你具体需要完成什么的功能,能从你真实需求的角度上讲讲你到底要的是什么?然后我才能给你最佳实践建议。
引用:JackJiang 发表于 2017-05-08 18:09
为什么登陆成功又去调用退出方法?不太理解你具体需要完成什么的功能,能从你真实需求的角度上讲讲你到底要 ...

IM是我应用的一个模块.当用户登出IM的时候,我希望这个模块的资源可以被释放.
现在的情况是一旦我登陆成功过一次net.openmob.mobileimsdk.java.core.LocalUDPDataReciever内含的进程永远无法被销毁.
引用:Archesu 发表于 2017-05-08 19:50
IM是我应用的一个模块.当用户登出IM的时候,我希望这个模块的资源可以被释放.
现在的情况是一旦我登陆成 ...

你先调用LocalUDPSocketProvider.getInstance().closeLocalUDPSocket()试试看。
引用:JackJiang 发表于 2017-05-08 20:45
你先调用LocalUDPSocketProvider.getInstance().closeLocalUDPSocket()试试看。

试了.还是无法释放. 可以给一份可以正常释放的客户端demo代码吗?
引用:Archesu 发表于 2017-05-10 13:50
试了.还是无法释放. 可以给一份可以正常释放的客户端demo代码吗?

没有理由会这样啊。你把sdk的源码复制到你的工程里,调试一下,很容易解决问题
引用:JackJiang 发表于 2017-05-10 14:21
没有理由会这样啊。你把sdk的源码复制到你的工程里,调试一下,很容易解决问题

我就是源码看下来的.  ClientCoreSDK.release()中调用LocalUDPDataReciever.stop()->this.thread.interrupt();
并不会真正意义上结束p2pListeningImpl中的死循环.  最后客户端在程序依然会重新创建udp连接,并永远阻塞在从udp句柄中读取消息
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部