本地数据与后台网络数据同步问题
2016-07-11 18:19
423 查看
今天总结一下这两天的工作内容吧,项目有一个记录模块原来只做了网络存储,所有的增删改查都依赖于网络,同时还有几个H5的展示界面,也是在服务器抓取数据,就这样有些没有wifi的客户便开始吐槽了(就是做个记录自己看,还要用我流量),大概就是这个样子,下面开始进入正题。
我需要做的:本地要建立数据库,然后H5要在我这拿数据(这个后续会说到),要抓取服务器的历史数据,还要考虑到用户两个手机切换使用时的同步问题(这是这次重点)。
本地数据库需要字段(id , net_Id , update_time , state ) // net_id 为服务器id, state为数据现在状态(分为:0,已上传,1新添,2已修改,3已删除)
服务器数据库需要字段(id , updata_time , state)
首先,id问题,我们选择的是本地数据库与服务器数据库维护两套不同的id(本地同时要存在本地id与服务器id,服务器数据库只维护自己id即可),本地的本地id自增(作为本地数据库的主键),未上传时本地数据库的服务器id为空,上传后服务器返回服务器id(服务器的id也为自增)并赋给本条数据。
然后就是同步操作了,第一次同步,此时update_time默认为0(存储在sharedpreference中)客户端需要拉取后台服务器数据库中的所有数据,并自动添加本地id(自增),此时将update_time设置为当前系统时间。之后如果网络状态一直良好,则在每次对本地数据库进行操作之后都对服务器进行操作,其中如果新添数据,则在上传成功之后接收返回来的服务器id赋给当前数据存入本地。如果用户的网络状态一直不好则所有操作都在本地进行。
客户端会在每次打开的时候,或者在运行状态下由无网络切换到有网络的状态时,会触发同步操作,同步操作分为抓取没有网络这段时间的服务器数据(可能为用户用别的手机添加)和上传这个时间段进行操作过的数据。首先根据update_time抓取数据,并判断每个的state,若为3(已删除),则删除本地的此条数据,其他则根据服务器id添加或覆盖本地数据,然后在这个异步请求当中去上传数据(否则update_time不能同步),上传所有update_time大于本地sp存储的time的数据,后台再去判断state进行操作,然后依次返回这几条数据的服务器id供本地存储。此时将本地sp存储的时间戳更新为本地时间。
这样就完成了同步操作(过程可能有些粗糙,欢迎大家指错,或给予建议)。
我需要做的:本地要建立数据库,然后H5要在我这拿数据(这个后续会说到),要抓取服务器的历史数据,还要考虑到用户两个手机切换使用时的同步问题(这是这次重点)。
本地数据库需要字段(id , net_Id , update_time , state ) // net_id 为服务器id, state为数据现在状态(分为:0,已上传,1新添,2已修改,3已删除)
服务器数据库需要字段(id , updata_time , state)
首先,id问题,我们选择的是本地数据库与服务器数据库维护两套不同的id(本地同时要存在本地id与服务器id,服务器数据库只维护自己id即可),本地的本地id自增(作为本地数据库的主键),未上传时本地数据库的服务器id为空,上传后服务器返回服务器id(服务器的id也为自增)并赋给本条数据。
然后就是同步操作了,第一次同步,此时update_time默认为0(存储在sharedpreference中)客户端需要拉取后台服务器数据库中的所有数据,并自动添加本地id(自增),此时将update_time设置为当前系统时间。之后如果网络状态一直良好,则在每次对本地数据库进行操作之后都对服务器进行操作,其中如果新添数据,则在上传成功之后接收返回来的服务器id赋给当前数据存入本地。如果用户的网络状态一直不好则所有操作都在本地进行。
客户端会在每次打开的时候,或者在运行状态下由无网络切换到有网络的状态时,会触发同步操作,同步操作分为抓取没有网络这段时间的服务器数据(可能为用户用别的手机添加)和上传这个时间段进行操作过的数据。首先根据update_time抓取数据,并判断每个的state,若为3(已删除),则删除本地的此条数据,其他则根据服务器id添加或覆盖本地数据,然后在这个异步请求当中去上传数据(否则update_time不能同步),上传所有update_time大于本地sp存储的time的数据,后台再去判断state进行操作,然后依次返回这几条数据的服务器id供本地存储。此时将本地sp存储的时间戳更新为本地时间。
这样就完成了同步操作(过程可能有些粗糙,欢迎大家指错,或给予建议)。
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 使用 Syncthing 在多个设备间同步文件
- 数据库链接字符串查询网站
- 如何成为一名专家级的开发人员
- 许多数据中心的工作者很满意他们的工作,将鼓励他们的孩子继续从事这份工作
- DB2实例管理
- DB2实例管理
- gitinspector+jenkins 开发代码统计CI
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- 第三章 数据库备份和还原
- 零编程经验的我是如何找到工作的
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- CentOS下DB2数据库安装过程详解
- C#实现多线程的同步方法实例分析