我有一个单独的进程应用程序,它包含一个服务组件(由活动启动并始终运行)和多个线程。我需要一个应用程序重复暂停(深度睡眠)7秒钟,然后在非常短的时间内启动加速度计(收集20个样本后加速度计停止)以节省电量。它必须在2.3以上的所有Android平台上运行。电池保护和AlarmManager性能
我的第一种方法是使用基于Handler的sendMessageDelayed方法(延迟= 7秒)在加速度计停止后调用服务组件中的计时器,而无需获取部分唤醒锁定。然而它在我看来这不是一个好办法,因为计时器只在手机没有睡着时计数滴答(如果我错了或者有解决这个问题的请在这里纠正我)。
我的第二种方法与第一种方法相同,但在调用sendmesssageDelayed之前获取部分唤醒锁。它工作正常,但电池消耗太多。
所以在这里几个问题:
我应该使用AlarmManager火,每七秒的广播?我担心的是AlarmManager的时间太短,因为它在内部获得了大量时间的部分唤醒锁。我想知道是否有人在AlarmManager获取Wakelock的最长时间内做过性能分析,或者有其他方法。我阅读了其他一些表示AlarmManager是有效的解决方案的文章,但它在很长一段时间内特别有用。
如果需要使用AlarmManager,我可以在广播接收器中使用作为服务组件中的公共静态字段维护的wakelock对象来获取部分唤醒锁(因此可以轻松地从应用中的任何其他组件访问它)?
也有任何问题访问和使用基于处理程序的对象从广播接收机通知服务线程收到报警广播? (处理程序对象作为服务组件中的静态公共字段进行维护,因此可以轻松地从应用程序中的任何其他组件进行访问)。
非常感谢您的帮助
解决了吗?如果是的话 - 你能否把你的解决方案写成答案? – ransh