我试图识别用户何时在屏幕关闭时按下音量键来更新活动。根据我的阅读,广播接收器(我认为)在手机睡眠时不起作用,因此唯一的方法是使用 PARTIAL_WAKE_LOCK 保持活动运行。我的应用程序是一个基本应用程序,不应该使用太多电池,但我担心使用 PARTIAL_WAKE_LOCK 可能会耗尽电池(这违背了屏幕关闭时识别按钮按下的目的)。
对于基本应用程序来说,PARTIAL_WAKE_LOCK 实际上会成为问题吗?如果是这样,执行此操作的最佳方法是什么,如果不是,使用 PARTIAL_WAKE_LOCK 的最佳方法是什么(即我应该何时获取/释放它)?
提前致谢。
这里有两个问题;我将重点关注其中的“WAKELOCK”部分。
唤醒锁因消耗移动设备的电池而臭名昭著。了解设备会将屏幕调暗,然后关闭屏幕,然后关闭 CPU 并进入“睡眠”模式。这对于您的手机来说是极其重要的一步,因为它可以节省电池。
唤醒锁非常危险,因为完成后很容易忘记释放锁。
一般来说,当设备尝试睡眠时,您不应该尝试让其保持唤醒状态;当您耗尽用户的电池时,这会激怒您的用户。
以下是一些可以更好地处理唤醒锁的技巧:
1) 仅当用户已连接/充电时才允许此操作
2) 使用接受超时参数的 WakeLock.aquire(..) 版本。这样,您可以醒来,检查某些状态,然后如果没有发生任何事情,则自动返回睡眠状态。 (看http://goo.gl/FkrO8 http://goo.gl/FkrO8)
3)使用AlarmManager创建不精确的定时器;这将允许您的应用程序在其他应用程序也被唤醒并工作时被唤醒。
4) 使用 JobScheduler API(在 L 中发布),它允许您从单个 API 处理此类调度和工作延迟。 (看http://goo.gl/Z1AqSn http://goo.gl/Z1AqSn)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)