Android设备调用REST web服务的速度有多快



我正在尝试设计一款拥有持久虚拟世界的多人android游戏。我有一个服务器,里面有一个代表世界当前状态的数据库,还有一些公开的web服务。我有一个android应用程序,它可以绘制特定玩家的世界视图,并对服务器进行http调用以获取玩家的当前状态(并相应地更新android的视图)。

到目前为止,我的计划是让应用程序在应用程序活动时不断轮询服务器(当用户不玩游戏时无需轮询)。我想知道我应该多快才能轮询我的网络服务并更新手机。我希望游戏能做出响应,并与虚拟世界中的其他玩家保持同步。此外,对服务器必须处理的负载有什么想法吗?这会成为瓶颈吗?

谢谢你的帮助!如果我能澄清什么,请告诉我。

速度有很多因素,例如连接(wifi/3g/4g/hsdpa)或服务器响应时间。或者如果用户是偏执狂并且已经构建了法拉第笼。这些只是一些可能性。你只需要通过性能增强和错误处理尽你所能(然而,我会找到一些方法来避免早期优化问题)。

您可以考虑一些简单的事情,比如在XML上使用JSON,因为它的大小较小,甚至可以使用压缩。

我认为,虽然我从来没有这样做过,但你可以使用UDP,但这取决于你是否100%需要数据包到达。据我所知,TCP试图确保数据包的传输,但正因为如此,它的传输速度较慢。例如,如果这是某种FPS,我会使用UDP,但如果它是基于回合的,那么TCP就可以了。

UDP的示例教程可以在这里找到:http://www.helloandroid.com/tutorials/simple-udp-communication-example

如果您想轮询,请确保异步进行,因为您不希望在主线程中发生这种情况。您可以使用AlarmManager,因为不需要服务,尽管正如您所说的"用户不玩时不需要轮询",您可以实现自己的设置

这里有一些Alarm和AsyncTask教程的链接:

  • http://developer.android.com/resources/articles/painless-threading.html[关于AsyncTask类以及Google如何使用它的非常好的文章]
  • http://www.vogella.de/articles/AndroidPerformance/article.html[异步任务教程]
  • http://www.vogella.de/articles/AndroidServices/article.html[AlarmManager]
  • http://developer.android.com/reference/android/app/AlarmManager.html[来自谷歌的类定义]

最新更新