4

我正在开发restful android应用程序,但我还是android新手,我想避免初学者床结构设计,这会给我带来麻烦。

我已经阅读了很多关于 android 服务和 restful 应用程序的讨论,其中许多是相互矛盾的,所以我想知道我是否选择了一个好的方法。

受此演示文稿http://www.youtube.com/watch?v=xHXn3Kg2IQE的启发,我将 http 请求放入 IntentServices,而不是异步任务。

我选择 Intent Service 是因为:

  • 作为一项服务,它们对诸如活动之类的前台/后台切换不敏感(不会被杀死)。
  • Intent 服务在单独的线程中提供工作,因此用户界面保持响应。

由于 Intent Service 不能同时运行多个请求,因此我将我的域“拆分”为几个组,并为每个组编写了我的 Intent Service。(结束于:一个 CRUD 集 -> 一个意图服务)这样我得到一个组内部一次只能运行一个请求(这对我有好处,因为这种方式永远无法执行例如在同一单元更新和删除)。而且,另一方面,如果它们来自其他组,我可以同时运行多个请求,并且不会相互影响。

所以基本上,我有这个:

  • 一个通用的 HTTPRequest 类,它从名称值对构建请求

  • UserIntentService - 创建用户相关请求并使用 HTTPRequest cass 执行它,并使用 UserProcessor 处理请求。通过数据意图通知调用者。

  • CallIntentService - 创建调用相关请求并使用 HTTPRequest cass 执行它,并使用 CallProcessor 处理请求。通过数据意图通知调用者。

  • UserProcessor - 解析响应

  • CallProcessor - 解析响应

  • ServiceHelper - 找到并启动正确的意图服务

从活动中使用时,我使用类似这样的东西:SeviceHelper.StartService(动作,数据),我得到活动内部本地广播接收器的响应。我在 OnStart() 上注册接收器,并在活动的 onStop() 方法上取消注册它。

这是一个好方法吗?

我应该只为所有呼叫提供一个 IntentService 吗?拥有一个始终在后台运行的服务,而不是使用必须为每个请求启动的 Intent 服务会更好吗?

我缺少的这种方法是否还有其他可能变得糟糕的事情?

4

0 回答 0