REST服务器
我创建了一个包含一个Rails服务器:users
和相关:comments
。 它是用来作为后端的API为Android客户端。 交换格式加载并在服务器上存储数据是JSON。 以下是相关的迁移。
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name
t.timestamps
end
end
end
...
class CreateComments < ActiveRecord::Migration
def change
create_table :comments do |t|
t.references :users
t.string :subject
t.text :message
t.timestamps
end
end
end
所有用户都已经导入。 因此,只能读取配置为:users
资源。 因此,对于:comments
应该是可以添加新条目。 以下是可用的路线。
user_comments GET /users/:user_id/comments(.:format) comments#index
POST /users/:user_id/comments(.:format) comments#create
new_user_comment GET /users/:user_id/comments/new(.:format) comments#new
user_comment GET /users/:user_id/comments/:id(.:format) comments#show
users GET /users(.:format) users#index
user GET /users/:id(.:format) users#show
Android客户端
在客户端,我使用的是Service
与AsyncTasks
下载,解析和存储用户到本地SQLite数据库。 一个ContentProvider
缓存用户提供到用户界面。 从服务器下载的用户对象包含的唯一ID users
表。 当一个新的评论获取客户机上创建这应该是有用的。
方案1:阅读评论
- 用户将显示在Android客户端上的列表视图。
- 用户项目被选中。
- 该列表活动创建一个
Intent
包含用户特定的URI,例如content://com.example.myapp.provider/users/23
。 - 用户活动显示有关用户和相关联的注释的详细信息。
- 缓存的意见获得通过加载
CursorLoader
。 (1) - 同步进程加载从远程服务器评论。 (2)
方案2:写评论
- 注释可从用户活动创建。
- 注释被存储到本地数据库。 (3)
- 存储评论sychronized与远程服务器。 (2)
头痛的问题
我标志着与下列问题相关的方案步骤。
- 如何创建您的评论内容URI都与使用
CursorLoader
在用户活动? 请介意的话,我只知道在这一点上的用户URI。 - 有人能描述我如何创建一个同步过程? 我不知道如果SyncAdapter作品在这里(从来没有使用过)。 是同步过程只是一个
Service
上,一方面开始任务下载,解析和评论存储在客户端和另一方面负载,编码并发送意见到服务器? - 如何为新评论内容URI是什么样子? 是
ContentProvider
征求意见一样的用户? 有只有一个SQLiteOpenHelper
的应用程序?
我挣扎的主要问题是如何设计的应用程序? 如果你知道我应该怎么同步用户和他们的相关评论更好的解决方案,你都非常欢迎。
答案
回答以下问题1和3。
我延长了REST模型如下:对于评论的JSON哈希返回现在包括相关用户的ID。 同一ID也被包含在JSON哈希的用户 。 这两个对象都存储在Android设备上的本地数据库。 这让我请求评论为特定用户 。 我只是通过服务器用户ID作为WHERE
子句。 征求意见的内容URI,因为我有我的问题暗示不级联。 它类似于用户内容URI:
content://com.example.myapp.provider.commentsprovider/comments
请注意,我改变了字符串的授权部分。 我决定创建独立的内容提供商 ,为用户和评论 。