我的应用程序旨在表现得像Instagram应用程序。这意味着:
当用户打开应用程序时,将显示本地数据库中的最新内容,但会触发请求以获取服务器的最新内容。如果服务器返回此类数据,则会使用它填充本地数据库,然后UI会显示它。
那么,我如何处理这可能在已经存在的记录和新记录之间产生的差距?假设我的API中每页有10个项目,并且有15个新项目。当请求返回时,最新的10个项目将插入到我的本地数据库中,这将留下5个项目与已经存在的项目之间的差距。如果用户不经常使用应用程序,这甚至可能会发生几次,如果他们有一段时间没有使用它,差距可能会很大,所以只是发出大量请求似乎不是溶液
第二件事是过时的数据。已在服务器上更新或删除的项目。我可以提供一个端点来检索更改,并软删除记录,这样它们仍然可以获得,但带有“已删除”标志。但问题是:何时以及如何申请?它不仅仅属于“输入应用程序 - >请求最新项目”流程。我应该定期轮询,也许使用某种通知?那么如果用户离线怎么办?
我很困惑,最近我一直在谷歌搜索很多,我还没有找到令人信服的解决方案。它们都是SyncAdapter风格的东西。
感谢。
答案 0 :(得分:1)
我不确定具体在Instagram上,但在我处理的应用上以及我在其他应用中看到的内容是在GET
页面0时删除本地数据的Feed。然后作为用户向下滚动,它会从下一页的互联网重新加载。
我的意思是"删除本地数据的提要"例如:
page=0
friends_recents_photos
onSuccess
- > DELETE friends_recents_photos
- > INSERT new data
onScroll
- > loadMore
page=1
onSuccess
- > APPEND new data AT end
但是只有该特定Feed的请求数据,其他Feed(例如followers
),详细信息(例如UserData
)或缓存/下载的图像都保存在缓存中以便快速访问。