这里考虑的是本地数据不会被其它用户修改的情况,类似于微信,离线任务都是自己要发出的消息,不会和网络数据产生冲突 对于多个离线用户,同时修改同一份数据的情况,不适合使用此方案,大多时候也不允许离线使用
查询数据 有网的情况下,从网络下载数据 以网络作为最新版本的情形:清空本地数据,将网络数据存储到数据库 以本地作为最新版本的情形:本地不存在Id则插入到数据库,本地存在则跳过 对于实时性不高的数据,也可以放在后台定期查询
新增,修改,删除 只适合以本地作为最新版本,否则会造成数据同步混乱 如果要以网络作为最新版本,要强制在线使用,不能使用离线模式 不管有无网络,将数据变动直接提交到数据库,并按时间和任务类型保存到离线任务 开启后台服务,有网络时上传离线任务
数据库中应该包括Id和OfflineId两个字段,因为离线数据是没有Id的,在线数据是没有OfflineId的 将网络数据插入数据库时,分配一个OfflineId,这样OfflineId永远非空,就可以作为主键
总结来说,这个方案只需操作数据库,将离线操作保存到后台任务提交,必要时才将查询数据插入数据库 各个步骤之间都是独立的,不会出现混乱关系