默认
发表评论 8
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
请教Android 端UDP监听停止问题
阅读(54920) | 评论(8 收藏 淘帖
在Android端,手机屏幕熄灭开始一段时间,可以正常接收到消息,熄灭后1分钟左右,控制台打印【IMCORE】本地UDP监听停止了(socket被关闭了?),。然后控制台一直重复打印 请教Android 端UDP监听停止问题_QQ图片20160701135715.png 。请问这个是为什么?

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

上一篇:求教关于 socket 和 http 的关系下一篇:android 熄屏一段时间后CPU停止运行问题
推荐方案
评论 8
这个确实是个问题
又是小米手机,小米的神隐模式最坑了,关于小米的神隐模式问题及解决方法,看看我在这个帖子2楼的回复:http://www.52im.net/thread-354-1-1.html
引用:JackJiang 发表于 2016-07-01 22:47
你的是小米手机吗?

别跟qq比,市面上的手机都会对qq和微信做特殊处理,一般的app不会有这待遇

恩,小米手机。好的谢谢。
引用:Casi 发表于 2016-07-01 21:30
对了我发现一个奇怪的问题,打印检测当前网络状态的时候(我是调用你源码的方法)手机黑屏一会就UDP掉线同 ...

你的是小米手机吗?

别跟qq比,市面上的手机都会对qq和微信做特殊处理,一般的app不会有这待遇
引用:JackJiang 发表于 2016-07-01 15:32
我忽然想到,你这线程并没有死,因为你说它“一直在打印log”,你可查下那个异常。
但如果是你的手机省电 ...

对了我发现一个奇怪的问题,打印检测当前网络状态的时候(我是调用你源码的方法)手机黑屏一会就UDP掉线同时打印:【IMCORE】【本地网络通知】检测本地网络连接断开了!但是我QQ为什么这个时候还能收到消息?这个是QQ的特殊保活机制吗
引用:JackJiang 发表于 2016-07-01 15:32
我忽然想到,你这线程并没有死,因为你说它“一直在打印log”,你可查下那个异常。
但如果是你的手机省电 ...

恩,我放在service里面启动的,进程没死,因为我在seivice里面加了个线程每间隔3秒打印一条日志它会一直打印,但是IM的UDP过一会就报监听停止,网络也没断,我尝试给我QQ发消息手机QQ还是可以收到的。我尝试在在源码这个catch报错地方设置一个标志,报错后调用service里面的一个重置方法,重置实现的具体思路是先调用IMClientManager.getInstance(this).release();,然后初始化发送登录包结果。结果是加了IMClientManager.getInstance(this).release();这行代码后,一次也登录不成功。
我忽然想到,你这线程并没有死,因为你说它“一直在打印log”,你可查下那个异常。
但如果是你的手机省电策略粗爆地把网络关了,那就没招了。

通常说的保活是线程保活,只要线程不死,基本上不会问题,除非你手机自动把网络给关了。这块每个android手机可能都有点不一样,因为省电策略不一样,这也是android手机最难搞的地方,你可以有针对性地查查
这需要实现系统自启动的后台服务,用于进程保活和网络保活,你可以参考微信的实现思路:http://www.52im.net/thread-210-1-1.htmlhttp://www.52im.net/thread-209-1-1.html

更多心跳保活的文章请参考:http://www.52im.net/forum.php?mod=collection&action=view&ctid=17
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部