我正在开发一个小型实用程序,它可以扫描二维条码,然后将每个条码提交给执行更长任务的 IntentService。
当显示活动时,它应该阻止设备休眠,直到在服务中处理条形码。如果服务完成处理,它会自行停止,但活动应该仍然可见。
我想在活动生命周期中持有一个 SCREEN_DIM_WAKE_LOCK WakeLock,但由于这种类型不会阻止 CPU 睡眠,我还需要在扫描新的二维码时在活动中获取一个 PARTIAL_WAKE_LOCK,然后释放它处理后在意图服务中。
SCREEN_DIM_WAKE_LOCK 的目的是避免用户每隔几秒钟按下电源按钮以唤醒设备并能够读取新条形码的不便。用户将不得不一个接一个地阅读大量代码,即使在没有用户交互的短时间间隔内,活动也应该存在。
我知道在 Android 中,由于我的应用程序无法控制的几种情况,无法 100% 保证应用程序处于顶部、未关闭或前台,但我想尽我所能。
那么可以持有多个WakeLocks吗?可以在哪里声明它们可以被活动和服务访问?(单例,扩展应用程序?)