默认

请教Android 端UDP监听停止问题

查看数: 49861 | 评论数: 8 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2016-07-01 13:58

正文摘要:

在Android端,手机屏幕熄灭开始一段时间,可以正常接收到消息,熄灭后1分钟左右,控制台打印【IMCORE】本地UDP监听停止了(socket被关闭了?),。然后控制台一直重复打印 。请问这个是为什么?

评论

java_jian 发表于 7 年前
这个确实是个问题
JackJiang 发表于 7 年前
又是小米手机,小米的神隐模式最坑了,关于小米的神隐模式问题及解决方法,看看我在这个帖子2楼的回复:http://www.52im.net/thread-354-1-1.html
Casi 发表于 7 年前
引用:JackJiang 发表于 2016-07-01 22:47
你的是小米手机吗?

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

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

你的是小米手机吗?

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

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

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

通常说的保活是线程保活,只要线程不死,基本上不会问题,除非你手机自动把网络给关了。这块每个android手机可能都有点不一样,因为省电策略不一样,这也是android手机最难搞的地方,你可以有针对性地查查
JackJiang 发表于 7 年前
这需要实现系统自启动的后台服务,用于进程保活和网络保活,你可以参考微信的实现思路: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

返回顶部