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被休眠

你可能感兴趣的:(Android,android,udp,锁屏,接收,发送)