首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >电池节能与AlarmManager性能

电池节能与AlarmManager性能
EN

Stack Overflow用户
提问于 2013-12-16 21:08:28
回答 1查看 676关注 0票数 2

我有一个进程应用程序,它包含一个服务组件(由活动启动并一直运行),其中包含多个线程。我需要一个应用程序反复暂停(深度睡眠)7秒,然后启动一个加速度计非常短的一段时间(加速度计在收集20个样本后停止),以节省电池。它必须运行在所有android平台上,最好是2.3以上。

我的第一种方法是在服务组件中使用基于Handler的sendMessageDelayed方法(延迟=7秒)在加速度计停止后调用一个定时器,而不获取部分尾流锁。然而,在我看来,这并不是一个好方法,因为计时器只会在手机没睡着的时候计算滴答声(如果我错了,或者有办法解决这个问题,请在这里纠正我)。

我的第二种方法与第一种方法相同,但在调用sendmesssageDelayed之前获得了部分唤醒锁。它工作正常,但电池消耗太多。

所以这里有几个问题:

  1. 我应该使用AlarmManager每7秒发射一次广播吗?我担心的是,对于AlarmManager来说,7秒时间太短了,因为它在内部获得了大量时间的部分唤醒。我想知道是否有人对AlarmManager将获得的Wakelock的最大时间进行了性能分析,或者有一种替代方法。我读过其他文章说AlarmManager是一种有效的解决方案,但对于长时间的解决方案尤其有用。
  2. 如果必须使用AlarmManager,我是否可以使用服务组件中作为公共静态字段维护的唤醒对象来获取广播接收器中的部分唤醒(因此它很容易从应用程序中的任何其他组件中访问)?
  3. 此外,从广播接收器访问和使用基于Handler的对象是否存在任何问题,以通知服务线程已收到警报广播?(处理程序对象作为服务组件中的静态公共字段维护,因此很容易从应用程序中的任何其他组件访问它)。

非常感谢你的帮助

EN

回答 1

Stack Overflow用户

发布于 2013-12-16 21:52:39

如果您使用的服务总是在运行,那么就没有必要使用Alarmmanager。处理程序更容易。每7秒一次就够了,你确定你想要吗?我是说,如果你提到“节约电池”?保持服务运行是昂贵的,不是因为服务本身,而是因为它保持清醒的东西使用果汁。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20620944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档