在Android中关闭屏幕时如何防止CPU“hibernate”?

我有一个应用程序,我通过WiFI发送网络数据。 一切都很好,直到我关闭显示器或设备进入“睡眠”状态。 我已经锁定了WiFi但是, 似乎情况是在睡眠时CPU速度下降导致我的流不正常(即数据包不能像我想的那样快速流动设备没有睡觉)。

我知道我可能/可能应该在协议级别解决这个问题,但这可能也不可能 ……

没有办法 “在屏幕关闭时防止CPU进入’睡眠’”? 如果是这样,怎么样? 如果没有,关于如何保持WiFi流的速度的任何建议是否一致,无论设备是否处于睡眠模式

    从PowerManager 获取PARTIAL_WAKE_LOCK 。 您还需要将WAKE_LOCK权限添加到清单中。

    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Tag"); wl.acquire(); //do what you need to do wl.release(); 

    好吧,经过更多的研究和实验,似乎真正的问题是,至少在某些手机上,他们的WiFi会进入“部分睡眠”模式, 即使您已经使用了WiFi锁定。 看起来这就是’WIFI_MODE_FULL_HIGH_PERF’标志在使用WiFi锁时被发明的……不幸的是,这个标志仅在某些设备/ Android版本上可用(我不知道哪个但是,它不可用对我来说)。 因此,它不是所有设备的修复程序。

    唯一的“解决方案”(实际上是一个kludge)似乎是’检测屏幕何时关闭,然后设置一个警报,此后立即重新打开屏幕’。 对此有所帮助的链接是:

    手机睡觉后如何保持任务活着?

    http://android.modaco.com/topic/330272-screen-off-wifi-off/

    我希望这可以帮助那些在手机进入睡眠状态/屏幕关闭时遇到WiFi中断的人(并且手机已拔下/断开连接[例如,当连接到adb时你不会看到这种效果; 只有当手机正在运行时)没有任何东西连接到它])。