Android客户端应用程序中"数据层"的最佳实践

14

这里有一个设计/最佳实践问题...

我刚开始学习Android开发,基本上是对Web /移动解决方案也是新手。

所以,我的问题是 - 在组织从远程服务器获取数据的Android应用程序结构时,最佳实践是什么?

应该将向服务器的请求放入一个类中进行通信(获取和发布请求),还是应该将我的请求视为数据源,即每个数据类自己管理它?

还是说我应该有更多抽象层次-一个层次用于获取数据,另一个层次用于使用一些接口的模型,而不知道数据来自何处?

我很好奇经验丰富的Android开发人员如何处理这些设计问题...

2个回答

10

Virgil Dobjanschi的演示文稿是一个很好的资源,正如之前指出的那样,它基本上告诉你要从后台服务中运行请求,这样Activity就不会被销毁,并尽早将数据存储在数据库中。

更多技术细节方面,我的做法是将应用程序分为三个组件:

1- 库,封装了HTTP请求和响应的处理(使用ApacheHTTP),它可以处理简单的请求/响应以及可能涉及cookie(在登录时可能是必需的)和修改HTTP头的高级功能。

2- Marshal / Unmarshal层,在这里我解析服务器数据(例如XML或JSON)并将其转换为对象(即模型),供我的应用程序的其他部分处理器处理。

3- 持久化层。

根据Dobjanschi的演示文稿,我通常使数据请求在服务中运行,而不是在Activity内的线程工作者中运行。


这是一段很棒的视频,谢谢!现在,我正在尝试实现它,特别是模式B(activity-> contentProvider -> ServiceHelper -> Service -> Rest -> Processor),但我现在很难弄清楚应该如何完成。我不明白这个服务的粒度是什么,例如,如果我有我的模型对象或数据库表叫做User、UserDetails、City、Category等等...我应该为所有“数据类型”都有这些类,还是专门化? - daneejela
例如,我应该有UserProcessor、CategoryProcessor(等等),UserService、CategoryService(等等),UserContentProvider、CategoryContentProvider(等等)吗? - daneejela

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接