Android中具有本地数据库(缓存)的远程服务器同步的智能算法,具有用于离线支持的分页功能

时间:2019-04-21 18:51:22

标签: android algorithm caching pagination synchronization

应用程序脱机支持的非常基本的设置,其中从API提取的数据存储在SQLite中,用于在应用程序未连接到互联网时显示列表。

当我想用服务器中的数据更新数据库中的数据时,就会出现问题。在服务器端实现了预定义的排序顺序,并且数据始终以相同的顺序出现。

从头开始,将加载数据并将其按接收到的顺序保存在DB中,并实现了分页。假设经过一段时间重新整理数据后,第1页(1-10)和第2页(11-20)中收到了新项目,但由于服务器已添加,因此数据库将11-20项目作为第1页此列表中有新商品,而local没有新商品。

如何处理这种情况并正确保存较新的10个(或更多/很少)项,以便从数据库中获取第1页时,先返回这些新项,然后再返回较旧的项?基本上,该如何与服务器同步处理数据的添加/删除/修改。

我想使用类似instagram / facebook之类的许多应用程序,在启动应用程序后立即在列表中滚动,在后台进行网络通话,将正确的结果保存到数据库并通知用户添加了新项目,然后将列表滚动到顶部以显示新项目。

我不能为此目的使用最新的Paging库和其他jetpack组件,因为它需要在应用程序中更改体系结构级别。

1 个答案:

答案 0 :(得分:0)

当插入到本地数据库中时,我会为项目加上时间戳。然后,在获取除第一页以外的其他页面时,还请按排序顺序询问自上次获取以来已打上时间戳的项目。将这些内容与第二页的结果合并。