是否有可能持有多个唤醒锁定?(Is it possible to hold multiple Wak

2019-09-22 14:01发布

我正在开发一个小工具应用程序,扫描二维条码,然后提交每个条码,在那里执行任务较长的IntentService。

当所显示的活性,应该防止设备睡觉,直到条形码在服务处理。 如果该服务完成处理时,它停止本身,但活动仍然应该是可见的。

我想在活动生命周期中举行SCREEN_DIM_WAKE_LOCK激活锁定,但由于这种类型不会阻止CPU进入睡眠状态,我还需要在活动中获取PARTIAL_WAKE_LOCK当一个新的二维码进行扫描,然后将其释放在意向服务后,已处理。

该SCREEN_DIM_WAKE_LOCK目的是为了避免用户按下电源按钮,每几秒钟就可以唤醒设备,并能够读取新的条形码的不便。 用户将要读码的大量接踵而至的活动应围绕即使是很短的间隔那里没有用户交互。

我知道在Android中有应用程序是在上面没有100%的保证,而不是封闭的,或因前景化的几个条件,我的应用程序无法控制,但我想只要我可以走了。

因此,它可以容纳多个WakeLocks? 凡能将它们宣布由活动和服务来accesed两者兼而有之? 件(Singleton,延伸应用?)

Answer 1:

它可以容纳多个WakeLocks。 事实上它所做的一切,当多个应用程序在同一时间同步,当屏幕关闭的时间。 (想象一下,您的Gmail和Facebook在当屏幕被锁定,同时Apps Sync的。他们不知道彼此会有不同的WakeLocks。可能会或可能不会是不同类型WakeLocks的)

Android将确保每个人的期望得到满足(最大的电池消耗,换句话说。)

在我看来,我觉得你在思维,你需要一个SCREEN_DIM_WAKE_LOCK,因为这可能会意外地消耗电池的很多事实,但根据您的使用情况下,我可能是错的。

所以,简单的答案是YES。 您可以保存多个WakeLocks如预期Android将(应该)采取行动。 只需要记住的是,你正确地释放两个Wakelocks。

在得到屏幕顶部的问题,我想你应该释放你的活动唤醒锁定,当它进入暂停状态(当莫名其妙的另一项活动是在上面,或使用故意按下电源按钮)。 因为这一点上,用户与其他应用进行交互,你应该尊重它,让它控制自己的行为。 你没有,直到你完成从服务放弃局部唤醒锁。

希望这可以帮助。



文章来源: Is it possible to hold multiple Wake Locks?