JJD*_*JJD 6 rest android ruby-on-rails android-syncadapter
我创建了一个包含:users和关联的Rails服务器:comments.它用作Android客户端的后端API.在服务器上加载和存储数据的交换格式是JSON.以下是相关的迁移.
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name
t.timestamps
end
end
end
Run Code Online (Sandbox Code Playgroud)
...
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
Run Code Online (Sandbox Code Playgroud)
所有用户都已导入.因此,仅为: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
Run Code Online (Sandbox Code Playgroud)
在客户端,我使用Servicewith AsyncTasks来下载,解析并将用户存储到本地SQLite数据库中.A ContentProvider将缓存的用户提供给UI.从服务器下载的用户对象包含users表的唯一ID .在客户端上创建新注释时,这应该很有用.
Intent包含用户特定URI的例如content://com.example.myapp.provider/users/23.CursorLoader.(1)我标记了与以下问题相关的方案步骤.
CursorLoader用户活动中的a使用的注释创建内容URI ?请注意,此时我只知道用户URI.Service一方面启动任务来下载,解析和存储客户端上的注释,另一方面加载,编码并向服务器发送注释?ContentProvider征求意见的相同用户?SQLiteOpenHelper应用程序中只有一个吗?我正在努力解决的主要问题是如何设计应用程序?如果您知道如何更好地解决我应该如何同步用户及其相关评论的问题,那么非常欢迎您.
问题1和3的答案.
我按如下方式扩展了REST模型:为注释返回的JSON哈希现在包括关联用户的id.用户的JSON哈希中也包含相同的ID.这两个对象都存储在Android设备上的本地数据库中.这允许我请求特定用户的评论.我只是将服务器用户ID作为子句传递.评论的内容URI 不是我的隐含问题.它类似于用户内容URI:WHERE
content://com.example.myapp.provider.commentsprovider/comments
请注意,我更改了字符串的权限部分.我决定为用户和评论创建单独的内容提供程序.
一种简单的架构是始终首先更新服务器中的内容,立即将发布的评论发送到服务器,然后通过GCM向应请求更新评论列表的用户推送通知。流程如下所示:
"update_comments": "1"| 归档时间: |
|
| 查看次数: |
3392 次 |
| 最近记录: |