有人可以解释处理C2DM意图工作的常用方法吗?
我有一个智能轮询的应用程序 - 它本质上是一个消息传递应用程序 - 因此它会轮询服务器以检查收件箱中的新消息。有一个活动用户界面和一个保守轮询的后台服务。
现在为了补充民意调查,我已经将C2DM包括在内 - 可能是为了推送未读取30分钟的收件箱内容。
因此,当我收到C2DM RECEIVE意图时,我告诉我的后台服务进行民意调查。
这将如何运作?
我认为C2DM的主要用例是“闲置”手机(即放在口袋里,屏幕关闭)。因此,您获得RECEIVE意图,获取唤醒锁定,并启动后台服务以进行轮询;将意图发送给后台服务后返回唤醒锁。
后台服务还活多久?
Android不会立刻将其杀死吗?
我应该尝试ping服务器然后死掉吗?
我很困惑在获得C2DM意图后我可以做多少处理。
答案 0 :(得分:0)
你建议的方法听起来很可靠。使用C2DM作为补充轮询的方法是一个很好的appraochapproach。 C2DM本身不是100%可靠(它永远不会)并且您的设计可以防止这种情况发生。
服务将一直运行直到完成其工作。我希望它会向用户显示通知,或者更新消息列表。
我将服务设置为进行指数退避重试,并在失败前尝试X次。如果它失败了,那么下次轮询发生时它将被更新。我不希望后台服务尝试太长时间,因为轮询代码就是这样做的。
除非操作系统需要严重的内存,否则您的服务将继续运行。您可以强制将服务作为前台服务(带有通知图标),但我不认为这是必要的。
我假设您的服务定期轮询服务,因此它将弥补C2DM消息中发生服务器请求的任何失败。