Android应用程序中的实时用户列表

时间:2014-10-29 07:53:22

标签: android real-time long-polling

我在android中创建了一个chat app。应用程序将同时拥有100-150个用户(实时更改)。 用户数据来自http webserver。 我正在尝试创建一个实时用户列表,当用户数据从服务器更改时,该列表将动态更改。 有以下方法来实现这个问题 - 1.我可以每2分钟使用一次poll http请求从服务器获取数据。 轮询First,使用Timertask类有两种方法。 Second创建服务类并使用警报管理器。哪种方法性能最佳? 后来我发现投票是真正的电池杀手。除了轮询实时用户列表解决方案之外还有其他方法吗? 像facebook这样的现代应用程序使用哪种技术来实时更改数据?

3 个答案:

答案 0 :(得分:0)

为什么有必要?我不会这样做。您可以拥有一个服务,该服务从您的服务器获取数据并将其保存到本地数据库。当您启动服务时,这是您的选择!我不会每2分钟或类似的东西下载。也许你可以对用户行动做出反应。因此,如果他打开应用程序或点击聊天列表或类似的东西。

如果你真的需要它,你可以使用GoogleCloudMessaging,但我真的认为,这是一个糟糕的主意!

答案 1 :(得分:0)

在我看来,您应该使用GCM,而不是以每一次间隔使用轮询。每当用户发生任何变化时,您只需向您的应用发送推送通知,然后在您的BroadCastReceiver中点击网络API即可获取最新的Feed。

答案 2 :(得分:0)

SyncAdapter / AccountManager对您的用例非常有用。 Authenticator(在场景后面调用AccountManager)可以处理您的应用程序的身份验证。 SyncAdapter可以处理从服务器到本地数据存储的定期同步。您不必使用AlarmManager自己实现它。对于示例代码Sync Adapter

您的服务器将使用SyncAdapter,无需进行太多更改。唯一的区别在于您的客户端,例如,而不是在AlarmManager中调用服务器的获取数据方法,而是在类的onPerformSync()中调用它们,这扩展了SyncAdapter。

希望这有帮助。