chr*_*der 10 java rest android
我目前正在开发一个与RESTful Web服务交互的Android应用程序.客户端能够在Web服务上执行完整的CRUD.在搜索最佳实践后,我观看了几乎所有文章中引用的关于REST客户端的Google I/O 2010主题演讲.
要使用尽可能多的Android平台成为了可能,我决定去与选项B使用ContentProvider和SyncAdapter.这为我提供了内置的帐户系统,内容观察者和互联网可用时的定期同步.
因为我们的应用程序的一个非常重要的功能是离线编辑和可用性(它用于接收不良的环境),我们希望尽可能在本地保留相关数据.
客户端使用一个服务器通信的RESTful API中的Json,来自服务器的数据是使用反序列化GSON对模型(POJO的,普通Java对象).
为了保持代码清晰易读,我尝试构建自己的对象映射器,而不是Cursor直接使用.此映射器提供默认的CRUD操作,并在读取数据时将游标映射到模型,在写入数据时将模型映射到ContentValues.
但是,这种架构感觉非常臃肿.
首先,不可能获得关于电流的可靠信息SyncState(以向用户提供反馈).(现在使用这个SO答案 "黑客攻击" )
第二个问题是我需要的每个资源:模型,映射器,表定义和ContentProvider URI.这只是一个资源管理的代码很多.
第三个问题是通过我的映射器要求模型我阻止自己CursorLoader在活动中使用a .
底线
我正在寻找一种可维护且轻量级的方法来使用Json进行离线内容和与RESTful Web服务的同步.此外,我希望能够在我的代码中使用模型,因为它比开发人员更友好(目前隐藏在我的Mapper类中).user.getName()cursor.getString(cursor.getColumnIndex(UserDataSource.COLUMN_NAME));
关于映射的一个很好的例子是Dapper结合为.NET编写的Dapper Extensions,但与我的方法类似,但是我的方法需要在许多不同的文件中定义所有列和字段(见上文).
另外,我正在考虑放弃ContentProvider我的代码,因为对于这么简单的任务,它感觉非常臃肿和过时.
您考虑过使用 ORM 吗?我通过OrmLite和Jackson的组合取得了成功我过去您必须编写自己的同步服务,但 OrmLite 会处理涉及数据模型的繁重工作。
尽管您无法获得 ContentProvider + SyncAdapter 组合提供的一些好处(当您使用 POJO 时仍然没有 CursorLoader),但此设置可以减轻复杂模式和/或大量类型的负担。
以下是 OrmLite 主页上的表定义示例:
@DatabaseTable(tableName = "accounts")
public class Account {
@DatabaseField(id = true)
private String name;
@DatabaseField(canBeNull = false)
private String password;
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,模型+映射+表定义非常快速且轻松地组合在一起。
| 归档时间: |
|
| 查看次数: |
1002 次 |
| 最近记录: |