【问题标题】:Android: sending request from serviceAndroid:从服务发送请求
【发布时间】:2015-11-30 17:45:12
【问题描述】:

我有一个应用程序,其中包含通过 http 请求从服务器获取的数据列表。现在我想在有新数据可用时发出通知,并且我假设它可以通过服务来实现。

这是一个好习惯吗?从服务发出的请求数量是否有任何限制?

我想要实现的是类似 gmail 应用程序。当我收到新电子邮件时,会显示通知。

我希望我的应用尽可能地更新数据,但我知道每 5 秒发出一次请求可能太多了。

我对所有替代方案和如何做到这一点的各种想法持开放态度。

【问题讨论】:

  • 我认为服务器推送通知是最好的。服务器不会每 5 秒提取一次数据,而是在有新数据可用时将 GCM 推送到客户端。当 GCM 通知到来时,客户端可以在收到数据后开始请求真实数据并更新数据库或 UI。对于Android上的服务,也许你想参考这个链接youtube.com/watch?v=xHXn3Kg2IQE。希望有用。

标签: android service android-notifications


【解决方案1】:

不确定您是否真的需要每 5 秒提取一次数据。当然,也太过分了。你有两个选择:

  1. 按照@duynt 在评论中的建议使用 GCM。如果您从未使用过,请关注Try cloud messaging for Android。这样您就不必担心在本地管理您的服务,但只要有可用的最新数据,您就会收到通知,以便您可以发出请求以获取该数据并在通知中更新。
    GCM 需要一个应用程序服务器 您必须在您的环境中实施。此应用程序服务器使用适当的 XMPP 或 HTTP 协议通过所选的 GCM 连接服务器将数据发送到客户端应用程序。快速浏览About GCM connection server。

  2. 无论出于何种原因,如果您想从本地 Android 服务组件中提取数据,您仍然可以这样做。但是5秒的频率真的很高。由于大多数时候设备处于睡眠模式,您必须唤醒设备然后发送请求以提取数据。每 5 秒唤醒一次设备意味着耗电和消耗数据。
    如果您仍想通过增加频率来继续使用本地服务选项,请确保您遵循How to use http in sleep mode 并以这种方式实施它,否则它将无法在深度睡眠模式下工作。

你现在必须做出决定。

【讨论】:

  • 感谢您的好回答!我看到从本地 android 服务中提取数据是不好的选择。 @Nas 在评论中建议的同步怎么样?我看到许多 Android 应用程序也使用这种方法。
  • 我认为您也可以使用它。但是找到差异,看看对您的要求做了什么。关于同步适配器,我看到这个注释“注意:同步适配器异步运行,所以你应该使用它们,期望它们定期有效地传输数据,但不是即时的。如果你需要进行实时数据传输,你应该这样做在 AsyncTask 或 IntentService 中。”。因此数据同步可能不会在准确的时间发生。但这对您的应用来说可能没问题。
  • 那么,最后的决定是什么?为什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多