Android 锁屏后无法接收UDP

今天遇到一个很神奇的问题。
应用中有一个服务,服务中使用线程池 进行UDP的接收和发送。
但是,当锁屏后,数据无论如何都接收不到,当打开锁屏的时候,数据接收又恢复正常了。

并且,使用电源锁也没有任何效果。

  PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE); 
  wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "xxxxx"); 
  if(wl!=null) wl.acquire(); 

感到非常不解,于是查找网上的资料,发现

有些Android机型,在锁屏后,会休眠UDP(但是TCP不会被休眠)  

究其原因,应该是锁屏后,某些Android设备为了省电,阻止了组播的接收,但没有阻止单播的接收,所以,锁屏后,UDP接收不到数据,而TCP可以接收到数据。

详见 android锁屏休眠后,socket被休眠

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

氦客

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值