1

我正在开发一个需要在后台发送和接收数据包的应用程序。但我发现,当屏幕关闭时,cpu 和网络也被禁用。所以我在 Android Developers 上发现,如果屏幕关闭,我应该使用唤醒锁和 wifi 锁来让 CPU 正常工作。此解决方案适用于 LG Optimus One 等其他设备,但不适用于三星 Galaxy Tab。使用此设备,当屏幕关闭时,我无法再接收数据包(UDP),当我按下电源按钮重新启用屏幕时,我神奇地重新启动以接收数据包。在我的代码中,我调用:

powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_W AKE_LOCK, "TAG");

然后

wakeLock.acquire();

我认为这是三星的错误,但我不确定,如果有人能给我一些提示,我将不胜感激。

PS我需要一些编程帮助......我已经知道如果我修改一些手动设置以避免关闭屏幕,这将起作用。但我正在开发一个应用程序,我需要代码!!

4

2 回答 2

0

你应该PARTIAL_WAKE_LOCK在你的情况下使用。

我不确定为什么SCREEN_DIM_WAKE_LOCK还不够(没有找到任何证明这一点的文档),但PARTIAL_WAKE_LOCK在类似的情况下对我来说效果很好。

作为另一种选择,您可以使用WifiLock. 但是您需要对此保持警惕,因为您的网络连接可能是 2G 或 3G,而不仅仅是 Wi-Fi。因此,当您实际使用 3G/2G/等时,您不应该持有 Wi-Fi 锁定。

于 2011-05-20T09:00:16.057 回答
0

您可能还想检查高级 WIFI 设置。在首选项 - WIFI 设置中,您可以点击菜单键,单击高级图标,然后检查 WIFI 睡眠策略的值。选项之一是“屏幕关闭时”。

于 2011-05-20T09:05:29.893 回答