android锁屏休眠后,socket被休眠

pgmsoul 2014-12-05 08:09:31
实测,和机型有关,有的机型完全没问题。

但是有的机型,表现为锁屏后,UDP接收立即被休眠,无法接收UDP消息。锁屏状态下只要点亮屏幕,就会正常。

UDP发送,启动一个线程,每几秒发送一个UDP包,锁屏后可以正常发送,但是过一段时间,进入深度睡眠之后,就无法发送了。

开始以为是线程被休眠,但是后来发现,线程是可以运行的,但是socket无法正常工作。

使用服务,并且使用电源锁,
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "xxxxx");
if(wl!=null) wl.acquire();
无效,因为是socket别休眠,不是线程被休眠。

但是,人家一个代理上网软件可以正常运行,它肯定是在休眠状态下仍然可以进行正常的网络活动。
...全文
1553 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
botao258 2015-12-07
  • 打赏
  • 举报
回复
同求解决办法,楼主求给个思路呗,手机锁屏后,是否注册一个service线程一直运行,service里写个TCP链接发心跳包,并写udp阻塞并等待广播到来, 是否这样啊??
拼命三朗 2015-06-19
  • 打赏
  • 举报
回复
我也是这个问题,求解决
Shishydev 2015-02-11
  • 打赏
  • 举报
回复
楼主有没有找到解决这个问题的办法啊?
  • 打赏
  • 举报
回复
妖怪 2014-12-06
  • 打赏
  • 举报
回复
你说的休眠可能是Android里面做的节能优化导致的 在关闭屏幕或者睡眠的情况下可能会对数据链接进行关闭(如果当前没有数据传输)
windfury_plus 2014-12-05
  • 打赏
  • 举报
回复
感谢经验分享,学习了~
pgmsoul 2014-12-05
  • 打赏
  • 举报
回复
但是想用udp来响应问答是不行了,因为udp可以广播,而tcp必须知道对方的地址。
pgmsoul 2014-12-05
  • 打赏
  • 举报
回复
经过测试,发现,TCP接收不会被休眠,这个特性真是太有用了,而且一旦tcp有活动,udp也会被激活。 但是长时间休眠后,tcp接收会有一个延迟,应该是wifi被唤醒的动作。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧