2

考虑大型博客拥有的应用程序(它们的工作方式非常类似于 RSS 提要,但适用于您的手机)。每当博客发布新帖子时,应用程序都会在用户手机上创建有关新帖子的通知。

以下是我想了解的一些事情:

  1. 该通知是由我手机上的应用程序拉出还是由博客推送给它?
  2. 即使我没有启动应用程序,这怎么能工作?
  3. Android 平台的哪些类和服务用于创建此类应用程序?

非常感谢。

4

4 回答 4

3

您可以通过以下方式轻松执行以下操作:

  1. 您是否使用 AlarmManager 设置了闹钟
  2. 让警报接收器启动检查更新的服务
  3. 使用 NotificationManager 向用户显示通知

这是一个轮询解决方案,在您描述的大多数情况下,它应该很好并且可能更好。

但是,如果您想要一个推送解决方案,您可以查看 Android C2DM,它允许您的服务器将推送通知发送到已注册的 Android 设备。

编辑

应用程序如何“不启动”运行?

嗯,有几种方法。一是任何应用程序都可以注册不同的设备事件;其中之一是启动完成事件。

第二种方法是使用AlarmManager。如果应用程序设置了警报,然后用户离开该应用程序,然后操作系统决定关闭该应用程序,则仍然可以注册警报以在特定时间运行。触发此警报时,将运行应用程序开发人员喜欢的任何代码,包括启动服务。当然,在不通知用户的情况下这样做可能是一个问题,尤其是在服务耗尽电池等情况下。

于 2012-06-20T22:42:07.403 回答
1

当然,有很多方法可以做到,但在一般情况下,我会想象:

  1. 是被手机拉的
  2. 即使您没有看到该应用程序,它也可以在后台运行服务
  3. 这真的取决于应用程序的功能,您想了解的任何特定方面?
于 2012-06-20T22:43:00.523 回答
1

单程:

  1. 应用程序可以在启动后启动一个Sercvicevia Broadcast。请参阅此处:如何自动启动 Android 应用程序?
  2. 该应用程序Service在启动时启动,服务就像一个活动,除了没有 UI 并且它在后台运行
  3. Service不时寻找新帖子,例如RunnableScheduledThreadPoolExecutor
  4. 找到一个新Runnable帖子并发出通知

注意:这也是一个投票解决方案。而不是ScheduledThreadPoolExecutor你可以使用一个Handler总是调用自己的线程,或者只是一个不时休眠和醒来的线程。恕我直言 ScheduledThreadPoolExecutor 是“不错”的方式。

于 2012-06-20T22:48:01.097 回答
1

该通知是由我手机上的应用程序拉出还是由博客推送给它?

也可以是。

即使我没有启动应用程序,这怎么能工作?

好吧,在 Android 3.1+ 上,您需要至少运行一次该应用程序才能使这些东西正常工作。

除此之外,他们正在使用AlarmManager(用于拉取)或 C2DM(用于推送)之类的东西,它们都不需要您“启动应用程序”,就像您需要保持 Gmail 活动打开才能获得新电子邮件一样消息。

于 2012-06-20T23:38:45.380 回答