0

我已经实现了一个 udp 数据包接收器线程,它监听 UDP 数据包的接收。屏幕打开时它工作正常。按下电源按钮时,设备进入睡眠模式。之后它不再接收任何 UDP 数据包。并且仅当屏幕进入 ON 状态时才接收数据包。索尼 Xperia Z 平板电脑并非如此。无论屏幕开启或关闭状态,它都会一直接收 UDP 数据包。

我已经使用 PowerManager.PARTIAL_WAKE_LOCK 来确保 CPU 在睡眠模式下运行。但这没有区别。我想知道是什么原因导致 UDP 数据包在睡眠模式下被阻止。请帮助我了解为什么 UDP 数据包在接收中被阻止以及谁阻止了它?我也在为此寻找解决方案。

4

2 回答 2

1

该线程处理该问题:https ://groups.google.com/forum/?fromgroups=#!topic/android-platform/OpbSdp9FTmA

基本上,解决方案是

获取 PARTIAL_WAKE_LOCK,并在屏幕关闭时捕获。然后禁用并重新启用wifi。这是有效的,因为过滤器仅在屏幕关闭时打开,因此在屏幕关闭的情况下启动 wifi 将使其继续工作,直到屏幕再次关闭。

于 2014-08-28T21:36:54.350 回答
0

尝试使用 WiFi 锁:

WifiLock wl = ((WifiManager) getSystemService(Context.WIFI_SERVICE)).createWifiLock(WifiManager.WIFI_MODE_FULL, "wifi_lock"); wl.acquire();

...在这里做你的事情,完成后:

wl.release();

于 2014-02-16T23:44:35.770 回答