概观
编辑:
任何感兴趣的人还可以考虑看看 RESTful android,这可能会让您对此有更好的了解。
我从尝试实现Dobjanschi模型的经验中学到的是,并不是所有事情都是一成不变的,他只是为您提供了可能会因应用程序而异的概述,但公式为:
遵循这个想法+添加自己的= Happy Android应用程序
某些应用程序上的模型可能与要求有所不同,有些可能不需要SyncAdapter帐户,其他可能使用C2DM,我最近使用的模型可能会帮助某人:
创建一个具有Account和AccountManager的应用程序
它将允许您使用SyncAdapter同步数据。在创建自己的SyncAdapter上已对此进行了讨论
创建一个ContentProvider(如果它适合您的需求)
这种抽象使您不仅可以访问数据库,而且可以使用ServiceHelper来执行REST调用,因为它具有REST Arch的一对一映射方法。
内容提供者| REST方法
查询----------------> GET
插入----------------> PUT
更新----------------> POST
删除---------------->删除
ServiceHelper分层
这个家伙基本上将使用从ContentProvider传递的参数来启动执行Http(不一定是协议,但这是最常见的)REST方法的服务。我传递了从内容提供程序上的UriMatcher获得的匹配整数,因此我知道要访问的REST资源,即
class ServiceHelper{ public static void execute(Context context,int match,String parameters){//find the service resource (/path/to/remote/service with the match//start service with parameters }}服务
被执行(我大部分时间都在使用IntentService),并通过帮助程序传递的参数进入RESTMethod,这有什么用?请记住,服务是在后台运行事物的好方法。
还要实现BroadCastReceiver,以便当服务完成其工作时,通知我的Activity已注册此Broadcast并再次重新查询。我相信这不是Virgill会议的最后一步,但是我敢肯定这是一个不错的方法。
RESTMethod类
接受参数后,WS资源(http://myservice.com/service/path)添加参数,准备好一切,执行调用并保存响应。
如果需要身份验证,则可以从AccountManager请求。如果由于身份验证而导致服务调用失败,则可以使身份验证无效并重新身份验证以获取新的令牌。
最终,无论我基于匹配器创建处理器并传递响应,RESTMethod都可以为我提供XML或JSON。
处理器
它负责解析响应并将其插入本地。
示例应用程序?当然!
另外,如果您对测试应用程序感兴趣,请查看Eli-G,它可能不是最佳示例,但它遵循ServiceREST方法,它是由ServiceHelper,Processor,ContentProvider,Loader和Broadcast构建的。



