【发布时间】:2015-01-05 15:36:25
【问题描述】:
我正在尝试了解从服务器获取数据并将其存储在数据库中并在多标签 Android 应用程序中以片段的形式显示的最佳实践
应用结构如下: 主要活动有 3 个选项卡,每个选项卡分别有一个从服务器获取的提要、朋友、奖励列表。这些需要点击三个不同的端点,并被分页(每个提要、奖励、朋友信息都在大小 = 5 的页面中)
目前在 App.onCreate() 方法 [App extends Application] 中,我正在点击这些端点的第一页并将其存储在 App.appData 对象中(具有 ArrayList 提要、ArrayList 朋友、ArrayList 奖励的复合对象)。
我应该同时将这些保存到数据库中,还是应该在用户暂停应用程序时以某种方式拦截(即没有可见的活动)并在该回调函数中保存 App.appData 的内容进数据库?否则,我觉得一旦用户滚动并转到此从服务器获取并写入数据库周期下方的页面,将会持续很多次
是否有此类应用程序架构的最佳实践/教程?
+-----+----+---+
| T1 | T2 | T3|
+-----+----+---+ +---------+ +---------+
| F1 | | F2 | | F3 |
| +----------+ | | | | |
| +----------+ | | +-------+ | +----+ |
| | | |-------+ | |----| |
| +---------+ | | |-----| | | |----| |
| +---------+ | | +-----+ | | +----+ |
| | | Friends| | Rewards |
| Feeds | | | | |
+--------------+ +---------+ +---------+
【问题讨论】:
-
(只有我)当数据发生变化时,我会立即在本地保存数据。
-
谢谢,你做得怎么样?从某种意义上说,当网络请求(我正在通过改造)失败时,您是否会自动从数据库表中获取数据?是否有一个库可以简化这个过程(基本上类似于缓存)?谢谢
-
在本地持久化和与服务器同步是完全不同的两件事。不要缓存数据库更改。在本地 db 表中有 isDirty、isDeleted 位并在与服务器成功通信时清除 isDirty 位和/或执行物理删除。在服务器上更改的数据需要很好地推送到应用程序,这很难做到,因为服务器需要知道设备上已经存在什么以有效地向下推送更改。哦,我从来没有使用过改造或凌空抽射,因为我在 android 中的 httpurlconnection 没有问题。
标签: android android-fragments android-listview android-sqlite android-networking