免责声明:我的应用程序已经在没有任何唤醒锁的情况下工作了1+年,而且对大多数设备来说都很好。
我在追踪GPS,它的工作方式是这样的:
因为连接不好,地点也不好,有时需要2-3分钟的时间。而且它是有效的。不管手机是不是睡着了。
现在我正在读关于WakeLock的文章,这对我来说毫无意义。我的东西怎么起作用了?这是巧合吗?
发布于 2012-07-27 00:07:59
我的东西怎么起作用了?
一种事物的组合,包括大量的运气。:-)
首先,正如Joel所指出的,设备由于您的警报而短暂地醒来,但是操作系统只保证在onReceive() of BroadcastReceiver期间保存一个BroadcastReceiver。
至少在某些版本的安卓系统上,请求GPS更新可能会导致操作系统获得自己的WakeLock。这是无文件记录的行为AFAIK,我从来没有依靠它个人。但是,如果是这样,并且在删除位置更新之前,您正在做剩下的工作("Wrap,发送数据到服务器并关闭服务“),那么这将解释这种行为。
在您的方法中仍然存在潜在的差距(例如,如果您委托一个Service来完成这项工作,而不是将一个WakeLock作为将控制权传递给该服务的一部分)。从统计上讲,它可能偶尔会失败,但在很多时候都会起作用。
就个人而言,我建议使用WakeLock,以防未记录的行为发生变化。LocationPoller。
发布于 2012-07-26 23:08:41
很好地阅读了AlarmManager文档。
只要警报接收器的onReceive()方法正在执行,告警管理器就会持有CPU唤醒锁。
更远..。
注意:警报管理器适用于您希望在特定时间运行应用程序代码的情况,即使您的应用程序当前没有运行。对于正常的定时操作(滴答、超时等),使用Handler更容易,效率更高。
基于这个..。我认为这是合理的,它目前的工作,纠正我,如果我错了。
https://stackoverflow.com/questions/11679259
复制相似问题