[Android开发] 在Android开发时,如何实现和服务器的数据同步?
来源:互联网 发布:shell执行sql脚本 编辑:程序博客网 时间:2024/05/22 04:43
这个问题,分为两部分,一个是客户端数据有变化了就上传,这个好说;第二个是服务器端有变化了,客户端要能知晓并从服务器端拉取到数据。这个有几种解决方法:
方法1:
定期从服务器上轮询和上传,缺点是不实时,不优美。
方法2:服务器通过发送短信告诉客户端数据变化,客户端再去拉取。缺点是费钱,客户端在国外时貌似也不实时。
方法3:服务器和客户端建立Socket并保持心跳,优点是实时,缺点是耗电。每隔3分钟,客户端就向服务器发送一个心跳包;
服务器收到以后,记录当前的收到该客户端心跳包的时间。
服务器有一个心跳检测线程,
当一个客户端连接连续9分钟没有收到心跳包,
则认为该连接已经断开了。
方法4:使用google的C2DM的Push服务,这是方法3的升级版,很不错,但缺点是每个手机上都需要一个google帐号,才能使用该服务。
方法1:
定期从服务器上轮询和上传,缺点是不实时,不优美。
方法2:服务器通过发送短信告诉客户端数据变化,客户端再去拉取。缺点是费钱,客户端在国外时貌似也不实时。
方法3:服务器和客户端建立Socket并保持心跳,优点是实时,缺点是耗电。每隔3分钟,客户端就向服务器发送一个心跳包;
服务器收到以后,记录当前的收到该客户端心跳包的时间。
服务器有一个心跳检测线程,
当一个客户端连接连续9分钟没有收到心跳包,
则认为该连接已经断开了。
方法4:使用google的C2DM的Push服务,这是方法3的升级版,很不错,但缺点是每个手机上都需要一个google帐号,才能使用该服务。
另外同步的问题也要根据我们的实际需求来做,例如:
1、同步时间:首先要考虑需求,是不是一定要实时数据,如果数据不要求实时允许有延迟:客户端添加同步点,例如每次请求数据的时候都会附带请求是否有需要同步的数据,软件每次打开时同步一次,每次登陆时同步一次,再加上手动同步,基本满足需求。
2、同步内容:如果客户端当前用户可以唯一标识(比如需要登录),应该把数据比对放到服务端,也就是客户端现在有哪些数据服务端应该是知道的,通过时间戳和同步表(记录哪个表增删改查了哪条数据)来双向同步。有一个原则,能在服务端做的事就不要放客户端。
3、同步方式:我们用的是hessian(http、二进制),效率还行,也可以直接走json,需要实测网速以及同步数据块大小来决定采取哪种方式
0 0
- [Android开发] 在Android开发时,如何实现和服务器的数据同步?
- Android开发如何实现和服务器的数据同步
- 【Android开发】如何实现android和服务器长连接呢?
- 【Android开发】如何实现android和服务器长连接呢?推送消息的原理
- 【Android开发】如何实现android和服务器长连接呢?推送消息的原理
- 【Android开发】如何实现android和服务器长连接呢?推送消息的原理
- 【Android开发】如何实现android和服务器长连接呢?推送消息的原理
- 【Android开发】如何实现android和服务器长连接呢?推送消息的原理
- 【Android开发】如何实现android和服务器长连接呢?推送消息的原理
- 【Android开发】如何实现android和服务器长连接呢?推送消息的原理
- 【Android开发】如何实现android和服务器长连接呢?推送消息的原理
- 【Android开发】如何实现android和服务器长连接呢?推送消息的原理
- 【Android开发】如何实现android和服务器长连接呢?推送消息的原理
- Android 开发系列: UltraLite数据库和MobiLink同步服务器
- Android开发-如何在Window使用AndroidStudio开发工具实现JNI的开发—入门教程
- 用SugarORM快速开发需要同步和保存大量数据的Android互联网客户端
- Android开发服务器端,android与服务器如何通信的
- Android开发学习之录音同步播放的实现
- NBNC代码行统计
- 使用Event Bus模式解耦Android App组件间通信
- Intent的用法大全
- java模仿斗地主随机洗牌 发牌,TreeMap、ArrayList、TreeSet练习
- JDBC连接MySQL数据库及示例
- [Android开发] 在Android开发时,如何实现和服务器的数据同步?
- 算法思考--------生命游戏
- 将一个链式链表L分成2个链表,一个存储L的奇数位置的元素,一个存储L偶数位置的元素
- Java常见面试题
- poj3660
- 开始读英文原著Thinking in java
- uva - 10670 - Work Reduction(贪心)
- linux中文件压缩解压缩-----详解
- 总结一些 android 平常用到的自定义控件