设计方法:Android Restful with JSON

时间:2011-12-16 00:12:57

标签: android json web-services design-patterns rest

我正在开发一个停车系统,移动设备从服务器数据库查询停车数据。换句话说,用户请求空的停车位,并且服务器在他的设备上向他发送免费的现场编号。我正在使用带有JSON的宁静架构。

我观看了Google I / 0 2010休息客户端应用视频,并解释说您可以使用3种设计模式:

  1. 服务API
  2. contentprovider API
  3. contentprovider& syncadapter
  4. 我无法确定这三种中哪一种最适合我的应用,是否有人有任何有用的提示/知识?

    非常感谢任何帮助!

2 个答案:

答案 0 :(得分:3)

我已经使用Google I / O会话的建议实施了一个解决方案,并且它对我来说非常好。

要从远程服务器检索数据,必须使用后台线程,因为在等待服务器响应时无法阻止UI线程。最简单的方法是使用AsyncTask从doInBackground中的服务器获取数据,然后执行任何UI更新或保存需要在onPostExecute中发生的数据。这种方法对于很多用例都能很好地工作,但是Google I / O会话正在解决的问题是,如果您的Activity在等待服务器响应时被中断,您将丢失数据。该会议中提出的解决方案是关于保存数据的方法的建议,以便可以以未附加到活动的方式存储数据。

使用服务,您可以将数据检索与活动分开。 (请记住,尽管您仍然需要在服务中创建一个单独的线程来检索数据,因为服务仍在UI线程上运行。)ContentProvider在将信息从服务传递到请求的Activity时发挥作用。服务器数据。您可以使用数据库来存储响应。然后,Activity可以从数据库中获取响应。

SyncAdapter可用于重试失败的服务器调用和/或从服务器获取数据,而无需应用程序特别请求,因此当应用程序需要时,它将是新鲜的并准备就绪。当然,这应该非常谨慎地使用,因为它可能会耗费相当多的电池。

我强烈建议至少使用Service / ContentProvider方法。我能够使用该解决方案轻松地将缓存机制集成到我的应用程序中。

希望有所帮助。

答案 1 :(得分:1)

服务肯定。我假设你想要的是一个半恒定的更新,通知用户开放点并且如果该点被顶起则改变。服务最适合在后台运行,等待您发送的JSON数据。

ContentProvider和SyncAdapter我相信只处理手机上的数据,所以我不确定你为什么要使用它们。