首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试着理解我是否需要WakeLock

试着理解我是否需要WakeLock
EN

Stack Overflow用户
提问于 2012-07-26 23:00:35
回答 2查看 139关注 0票数 3

免责声明:我的应用程序已经在没有任何唤醒锁的情况下工作了1+年,而且对大多数设备来说都很好。

我在追踪GPS,它的工作方式是这样的:

  1. AlarmReceiver每5/10/15分钟启动一次服务(如用户所愿)
  2. 服务订阅位置更新,并等待最多1分钟好的GPS。
  3. 结束,将数据发送到服务器并关闭服务。

因为连接不好,地点也不好,有时需要2-3分钟的时间。而且它是有效的。不管手机是不是睡着了。

现在我正在读关于WakeLock的文章,这对我来说毫无意义。我的东西怎么起作用了?这是巧合吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-27 00:07:59

我的东西怎么起作用了?

一种事物的组合,包括大量的运气。:-)

首先,正如Joel所指出的,设备由于您的警报而短暂地醒来,但是操作系统只保证在onReceive() of BroadcastReceiver期间保存一个BroadcastReceiver

至少在某些版本的安卓系统上,请求GPS更新可能会导致操作系统获得自己的WakeLock。这是无文件记录的行为AFAIK,我从来没有依靠它个人。但是,如果是这样,并且在删除位置更新之前,您正在做剩下的工作("Wrap,发送数据到服务器并关闭服务“),那么这将解释这种行为。

在您的方法中仍然存在潜在的差距(例如,如果您委托一个Service来完成这项工作,而不是将一个WakeLock作为将控制权传递给该服务的一部分)。从统计上讲,它可能偶尔会失败,但在很多时候都会起作用。

就个人而言,我建议使用WakeLock,以防未记录的行为发生变化。LocationPoller

票数 1
EN

Stack Overflow用户

发布于 2012-07-26 23:08:41

很好地阅读了AlarmManager文档。

只要警报接收器的onReceive()方法正在执行,告警管理器就会持有CPU唤醒锁。

更远..。

注意:警报管理器适用于您希望在特定时间运行应用程序代码的情况,即使您的应用程序当前没有运行。对于正常的定时操作(滴答、超时等),使用Handler更容易,效率更高。

基于这个..。我认为这是合理的,它目前的工作,纠正我,如果我错了。

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

https://stackoverflow.com/questions/11679259

复制
相关文章

相似问题

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