以Gmail应用为例。无论手机是否开启,它都会每10分钟左右轮询一次,以下载自您上次检查后可能已到达的新电子邮件。
我知道如何创建新服务并绑定到它。但我可以看到几种方法来实现这一目标:
有什么折衷方案? Gmail应用如何实现它?
谢谢!
答案 0 :(得分:18)
Gmail应用使用推送,而不是轮询。我建议使用这种技术,轮询是移动设备中的电池杀手。
要实施推送,请查看C2DM。
如果您仍想轮询,推荐的方法是在AlarmManager中设置定期闹钟。
更新:Google已弃用C2DM并将其替换为Google Cloud Messaging (GCM)
更新:Google已弃用GCM并将其替换为 Firebase Cloud Messaging (FCM)
答案 1 :(得分:5)
对于一个连续的,但不是密集的民意调查,如你评论的民意调查(在民意调查之间的分钟范围内),我会用AlarmManager实现它。通过这种方式,您可以确保手机在不需要唤醒锁的情况下唤醒,这会破坏您的电池。正如CommonsWare指出的那样,你仍然需要在你的代码执行时实现一个唤醒锁,但你可以在代码完成后立即释放它,避免在等待时保持手机开启。有关如何实施它的示例,请参阅他的评论。
如果您需要在较短的时间内(每次轮询之间的秒数)需要更快的民意调查,我会使用服务,因为设置闹钟对于如此短的时间段没有意义,并且电池无论如何都会流失