2015-11-30 207 views
0

我有一个应用程序,它使用http请求从服务器获取数据列表。现在我想在新数据可用时发出通知,并且我认为可以通过服务实现。Android:发送服务请求

这是一个很好的做法吗?服务请求的数量是否有限制?

我想达到的目标是像Gmail应用程序。当我收到一封新邮件时,会显示通知。

我想我的应用程序是为最新的数据成为可能,但我明白,发出请求每5秒钟可能是太多。

我向所有人开放的替代品和各种想法如何做到这一点。

+0

你可以使用同步来做到这一点http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1/ – Nas

+0

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

回答

1

不知道如果你真的需要提取数据每5秒。当然,这太多了。您有两种选择:

  1. 将GCM用作@duynt在评论中建议。如果您从未使用过,请关注Try cloud messaging for Android。通过这种方式,您无需担心在本地管理您的服务,但每当有最新数据可用时,您都会收到通知,以便您可以请求获取并通知更新。
    GCM需求的应用程序服务器,必须实现在您的环境。此应用程序服务器使用适当的XMPP或HTTP协议通过选定的GCM连接服务器将数据发送到客户端应用程序。快速浏览About GCM connection server

  2. 以任何理由,如果你想从当地的Android服务组件中提取数据,你仍然可以做到这一点。但5秒频率真的很高。由于设备处于睡眠模式的大部分时间,您必须唤醒设备,然后发送请求才能提取数据。每5秒唤醒一次设备意味着电池消耗以及消耗的数据。
    如果您仍希望通过增加频率来继续本地服务选项,请确保您按照How to use http in sleep mode并以此方式实施,否则它将无法在深度睡眠模式下工作。

您必须立即作出决定。

+0

谢谢你的回答!我发现从本地android服务中提取数据是不好的选择。作为@Nas的同步怎么样?我看到很多Android应用程序也使用这种方法。 –

+0

我想你也可以使用它。但找到差异,看看你的要求是什么。关于同步适配器,我看到了这个注释:“注意:同步适配器异步运行,所以你应该使用它们,期望它们能够定期有效地传输数据,但不是瞬间的。如果你需要做实时数据传输,你应该这样做在AsyncTask或IntentService中。“。所以数据同步可能不会在确切的时间发生。但是,这可能适用于您的应用程序。 – cgr

+0

那么,最终的决定是什么?为什么? – cgr