0

有人可以解释处理 C2DM 意图工作的常用方法吗?

我有一个执行智能轮询的应用程序 - 它本质上是一个消息传递应用程序 - 所以它轮询服务器以检查您的收件箱是否有新消息。有一个活动 UI 和一个保守轮询的后台服务。

现在作为投票的补充,我已经加入了 C2DM——大概是为了推送 30 分钟未读的收件箱内容。

因此,当我收到 C2DM RECEIVE 意图时,我是在告诉我的后台服务进行投票。

这将如何运作?

我假设 C2DM 的主要用例是一部“空闲”电话(即在你的口袋里,屏幕关闭)。所以你得到一个 RECEIVE 意图,获取一个唤醒锁,然后启动后台服务去轮询;向后台服务发送意图后返回唤醒锁。

后台服务还能存活多久?

android不会马上把它杀掉吗?

我是否应该尝试执行 1 个服务器 ping 然后死掉?

我只是对在获得 C2DM 意图后可以进行多少处理感到困惑。

4

1 回答 1

0

您建议的方法听起来很可靠。使用 C2DM 作为轮询的一种补充方式是一种很好的方法。C2DM 本身并不是 100% 可靠的(永远不会),您的设计可以防止这种情况发生。

该服务将一直运行,直到完成其工作。我希望它会向用户显示通知,或更新消息列表。

我将服务设置为进行指数回退重试,并让它在失败前尝试 X 次。如果失败,那么下次进行轮询时,它将被更新。我不希望后台服务尝试太久,因为这就是轮询代码要做的事情。

除非操作系统严重需要内存,否则您的服务将继续运行。您可以强制该服务成为前台服务(带有通知图标),但我不认为这是必要的。

我假设您的服务定期轮询服务,因此它将弥补 C2DM 消息中的任何失败以发出服务器请求。

于 2012-04-05T15:55:22.170 回答