我使用 AlarmManager 启动一个周期性重复的警报。我需要 Wi-Fi 始终保持连接状态,因此我认为 Wi-Fi 上的唤醒锁是必要的。我不清楚的是我在哪里创建这个唤醒锁并避免在每次触发警报时创建它。我的应用中没有 Activity 。
我知道我可以为唤醒锁分配一个标签,但似乎没有任何方法可以询问 Android 以查看标签是否存在唤醒锁。如果我能做到这一点,我就可以知道当警报触发时唤醒锁已经存在,而不必费心重新创建它。或者有替代解决方案吗?
最佳答案
我不得不面对一个有点类似的场景。我还使用 AlarmManager 定期触发服务,即使手机屏幕已锁定,WiFi 也必须始终打开。我发现手动或以编程方式更改 WiFi sleep 策略对许多设备来说就足够了,不需要使用唤醒锁。然而,在一些 HTC 设备上,我发现这个设置在晚上根本不起作用。我监控了我的应用程序,发现 WiFi 会在 00:00(午夜)和早上 7:00 之间关闭 - 其余时间都非常有效。我还在其他地方(不是 stackoverflow)找到了一篇帖子,其中作者提到了一些关于 HTC 手机能够处理这个问题的特殊设置:
Settings.System.putInt(getContentResolver(), "smartsync_turn_off_wifi", 0);
这发生在大约一年半前,使用此设置可以让我在任何 HTC 设备(最高为 Android 3.1)上保存下来,至少直到最近。不久前,我们应用程序的一些用户报告说他们的 HTC,Android 4.x,没有做他们应该做的事情,因为 WiFi 在晚上关闭,所以我使用的神秘设置似乎不起作用不再适用于较新的设备。
无论如何,@AndroidDev,因为你的问题和我的问题似乎有些相关,我想知道你是否设法解决了它,如果回复是肯定的,如何解决。
关于android - 为 AlarmManager 警报创建 Wi-Fi 唤醒锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19240324/