我正在开发一个应用程序,我需要在后台发送和接收数据包。但我发现,当屏幕关闭时,cpu和网络也被禁用。所以我在Android开发者身上发现,如果屏幕关闭,我应该使用唤醒锁和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();
我认为这是一个三星的错误,但我不确定这一点,如果有人能给我一些暗示,我真的很感激。
P.S。我需要一些编程帮助...我已经知道如果我修改一些手动设置以避免关闭屏幕,这将有效。但我正在开发一个应用程序,我需要代码!!
答案 0 :(得分:0)
您应该在案件中使用PARTIAL_WAKE_LOCK
。
我不确定为什么SCREEN_DIM_WAKE_LOCK
是不够的(没有找到任何证明这一点的文档),但PARTIAL_WAKE_LOCK
在类似情况下对我来说效果很好。
作为另一种选择,您可以使用WifiLock
。但是你需要聪明一点,因为你的网络连接可能是2G或3G,而不仅仅是Wi-Fi。因此,当您实际使用3G / 2G /等时,不应该保持Wi-Fi锁定。
答案 1 :(得分:0)
您可能还想检查高级WIFI设置。 在首选项 - WIFI设置中,您可以按菜单键,单击高级图标,然后检查WIFI睡眠策略的值。其中一个选项是“屏幕关闭时”。