Android开发如何实现和服务器的数据同步
2015-11-18 23:21
2096 查看
这个问题,分为两部分,一个是客户端数据有变化了就上传,这个好说;第二个是服务器端有变化了,客户端要能知晓并从服务器端拉取到数据。这个有几种解决方法:
方法1:
定期从服务器上轮询和上传,缺点是不实时,不优美。
方法2:服务器通过发送短信告诉客户端数据变化,客户端再去拉取。缺点是费钱,客户端在国外时貌似也不实时。
方法3:服务器和客户端建立Socket并保持心跳,优点是实时,缺点是耗电。
方法4:使用google的C2DM的Push服务,这是方法3的升级版,很不错,但缺点是每个手机上都需要一个google帐号,才能使用该服务。
1、同步时间:首先要考虑需求,是不是一定要实时数据,如果数据不要求实时允许有延迟:客户端添加同步点,例如每次请求数据的时候都会附带请求是否有需要同步的数据,软件每次打开时同步一次,每次登陆时同步一次,再加上手动同步,基本满足需求。
2、同步内容:如果客户端当前用户可以唯一标识(比如需要登录),应该把数据比对放到服务端,也就是客户端现在有哪些数据服务端应该是知道的,通过时间戳和同步表(记录哪个表增删改查了哪条数据)来双向同步。有一个原则,能在服务端做的事就不要放客户端。
3、同步方式:我们用的是hessian(http、二进制),效率还行,也可以直接走json,需要实测网速以及同步数据块大小来决定采取哪种方式。
对业务数据表,建相对应的更新记录表(索引,更新时间,操作人,动作类型...)。同步的时候通过WebService读取服务器更新表的更新时间=客户端的更新时间,下面的行就是有改动的。然后更新。
方法1:
定期从服务器上轮询和上传,缺点是不实时,不优美。
方法2:服务器通过发送短信告诉客户端数据变化,客户端再去拉取。缺点是费钱,客户端在国外时貌似也不实时。
方法3:服务器和客户端建立Socket并保持心跳,优点是实时,缺点是耗电。
方法4:使用google的C2DM的Push服务,这是方法3的升级版,很不错,但缺点是每个手机上都需要一个google帐号,才能使用该服务。
1、同步时间:首先要考虑需求,是不是一定要实时数据,如果数据不要求实时允许有延迟:客户端添加同步点,例如每次请求数据的时候都会附带请求是否有需要同步的数据,软件每次打开时同步一次,每次登陆时同步一次,再加上手动同步,基本满足需求。
2、同步内容:如果客户端当前用户可以唯一标识(比如需要登录),应该把数据比对放到服务端,也就是客户端现在有哪些数据服务端应该是知道的,通过时间戳和同步表(记录哪个表增删改查了哪条数据)来双向同步。有一个原则,能在服务端做的事就不要放客户端。
3、同步方式:我们用的是hessian(http、二进制),效率还行,也可以直接走json,需要实测网速以及同步数据块大小来决定采取哪种方式。
对业务数据表,建相对应的更新记录表(索引,更新时间,操作人,动作类型...)。同步的时候通过WebService读取服务器更新表的更新时间=客户端的更新时间,下面的行就是有改动的。然后更新。
相关文章推荐
- android利用回调函数在对话框中传递数据
- Android 接口定义语言AIDL使用解说
- Android Studio 导入Volley模块后 gradle的修改。
- android sqlite cursor 没有返回数据,资源占用问题
- Android常见的两种启动服务的方式
- Android测试教程1--跑起来
- Android图片加载(4)
- android 把一个Activity窗口化的实现
- Android之退出应用关闭项目每个Activity的总结
- android开发笔记:listview
- Android 指纹扫描动画实现,仿新版360手机助手欢迎页
- Android之设置EditText输入类型(setInputType()方法和android:inputType属性)
- Android中 的各种Adapter 整理
- android学习ViewPager的简单使用
- Android快速开发系列 10个常用工具类
- android SQLiteOpenHelper的使用方法
- android开机自启动的几种方法
- Android控件BroadcastReceiver详解
- Android Studio1.4.x JNI开发基础-基本环境配置
- Android ProgressBar的案例