我在android中创建了一个chat app
。应用程序将同时拥有100-150个用户(实时更改)。
用户数据来自http webserver。
我正在尝试创建一个实时用户列表,当用户数据从服务器更改时,该列表将动态更改。
有以下方法来实现这个问题 -
1.我可以每2分钟使用一次poll http
请求从服务器获取数据。
轮询First
,使用Timertask类有两种方法。 Second
创建服务类并使用警报管理器。哪种方法性能最佳?
后来我发现投票是真正的电池杀手。除了轮询实时用户列表解决方案之外还有其他方法吗?
像facebook这样的现代应用程序使用哪种技术来实时更改数据?
答案 0 :(得分:0)
为什么有必要?我不会这样做。您可以拥有一个服务,该服务从您的服务器获取数据并将其保存到本地数据库。当您启动服务时,这是您的选择!我不会每2分钟或类似的东西下载。也许你可以对用户行动做出反应。因此,如果他打开应用程序或点击聊天列表或类似的东西。
如果你真的需要它,你可以使用GoogleCloudMessaging,但我真的认为,这是一个糟糕的主意!
答案 1 :(得分:0)
在我看来,您应该使用GCM,而不是以每一次间隔使用轮询。每当用户发生任何变化时,您只需向您的应用发送推送通知,然后在您的BroadCastReceiver中点击网络API即可获取最新的Feed。
答案 2 :(得分:0)
SyncAdapter / AccountManager对您的用例非常有用。 Authenticator(在场景后面调用AccountManager)可以处理您的应用程序的身份验证。 SyncAdapter可以处理从服务器到本地数据存储的定期同步。您不必使用AlarmManager自己实现它。对于示例代码Sync Adapter
您的服务器将使用SyncAdapter,无需进行太多更改。唯一的区别在于您的客户端,例如,而不是在AlarmManager中调用服务器的获取数据方法,而是在类的onPerformSync()中调用它们,这扩展了SyncAdapter。
希望这有帮助。