android如何同步实时获取服务器的数据

毛豆啊 2017-01-10 07:17:46
在android中,如果服务器对设备上的数据有更新,那么设备如何自动的去获取新的数据。比如服务器最开始返回给android设备一个用户信息,用户名:张三,年龄:25,用户id:123,职位:员工。后来后台对用户信息进行了修改,修改为,用户名:张三,年龄:28,用户id:111,职位:经理。这时候如果想要设备这里自动获取修改后的信息,可以怎么实现?可以在android端开启一个service,然后在里面写一个定时器,隔一段时间请求一次服务器的接口,如果有更新,就把更新的数据获取到,然后更新android设备上的信息吗?或是有其他什么好的方法,框架,能推荐下吗?
...全文
2917 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
dudutsale 2017-01-21
  • 打赏
  • 举报
回复
定时访问服务器,如果客户端的使用人恨过,对服务器造成挺大的压力。 还是用socket连接服务器,比较稳妥一些。没有开启软件就通过推送来进行触发。
只为搞笑 2017-01-12
  • 打赏
  • 举报
回复
然而推送也是轮询,这就尴尬
R_ine 2017-01-11
  • 打赏
  • 举报
回复
引用 4 楼 qq_20523943 的回复:
引用 1 楼 R_ine 的回复:
其实还可以。每次进入这个活动页面的时候去刷新一次数据。或者直接给个刷新按钮来进行刷新数据。
如果是打开应用开始,不管在哪个界面,服务器对数据有更新,应用这里都自动实现更新,不管是在哪个界面,我用service这样的方法可以吗?因为不知道其他的什么方法,但是我感觉开启一个service,并且隔断时间就去请求一次服务器,会不会太费资源,费电了啊?想了解下有没有其他什么好的方法。
那其实还有个方法。就是做个推送。就是服务器那边有数据更新,然后服务器主动推送给APP有信息更新,然后APP这里接收到服务器的推送,就去再次更新数据。可以去看下友盟推送之类的推送服务。
愚公要移山 2017-01-11
  • 打赏
  • 举报
回复
其实你可以这样,使用接口去监听,当有变化时在回调函数里面监听,使用观察者模式
开发者_android 2017-01-11
  • 打赏
  • 举报
回复
引用 5 楼 qq_20523943 的回复:
[quote=引用 3 楼 dalor 的回复:] 数据的更新比兑,只能是再次获取,不管使用什么方法都不能避免要得新访问,无论主动还是被动获取。 所以,你这种做法,已经是可以的了。就算有别的方法,本质上也是一样的。 你只能通过实现操作的需求,判断是让用户主动刷新,还是后台主动刷新。
但是我刚学习android不久,目前接触到的也就是这四大组件,深一点的都不知道去哪了解,想要实现这个大概的功能,我能想到的就是这样做,但是又觉着开启一个service,还隔断时间就去请求一次服务器,怕太费资源,费电了,所以想请教下有没有其他什么更好一些的方法。[/quote] 这个真没有,数据的刷新,都离不开对数据的重新访问,因为是比对更新,所以不能在服务器端使用缓存数据。总之离不开这样的操作流程的。
麦田捕手 2017-01-11
  • 打赏
  • 举报
回复
1,如果数据要在客户端做缓存(数据库),建议后台开service定时轮询服务器。 2,如果数据不需要做在客户端做缓存(数据库),到具体页面,调用接口请求服务器就可以了。 3,不用轮询,做im推送,当服务器数据更新后,通过im推送给客户端。
毛豆啊 2017-01-11
  • 打赏
  • 举报
回复
引用 3 楼 dalor 的回复:
数据的更新比兑,只能是再次获取,不管使用什么方法都不能避免要得新访问,无论主动还是被动获取。 所以,你这种做法,已经是可以的了。就算有别的方法,本质上也是一样的。 你只能通过实现操作的需求,判断是让用户主动刷新,还是后台主动刷新。
但是我刚学习android不久,目前接触到的也就是这四大组件,深一点的都不知道去哪了解,想要实现这个大概的功能,我能想到的就是这样做,但是又觉着开启一个service,还隔断时间就去请求一次服务器,怕太费资源,费电了,所以想请教下有没有其他什么更好一些的方法。
毛豆啊 2017-01-11
  • 打赏
  • 举报
回复
引用 1 楼 R_ine 的回复:
其实还可以。每次进入这个活动页面的时候去刷新一次数据。或者直接给个刷新按钮来进行刷新数据。
如果是打开应用开始,不管在哪个界面,服务器对数据有更新,应用这里都自动实现更新,不管是在哪个界面,我用service这样的方法可以吗?因为不知道其他的什么方法,但是我感觉开启一个service,并且隔断时间就去请求一次服务器,会不会太费资源,费电了啊?想了解下有没有其他什么好的方法。
开发者_android 2017-01-11
  • 打赏
  • 举报
回复
数据的更新比兑,只能是再次获取,不管使用什么方法都不能避免要得新访问,无论主动还是被动获取。 所以,你这种做法,已经是可以的了。就算有别的方法,本质上也是一样的。 你只能通过实现操作的需求,判断是让用户主动刷新,还是后台主动刷新。
寒冰大神 2017-01-11
  • 打赏
  • 举报
回复
每次进这个页面就重新获取数据不就保证是最新的了么
R_ine 2017-01-11
  • 打赏
  • 举报
回复
其实还可以。每次进入这个活动页面的时候去刷新一次数据。或者直接给个刷新按钮来进行刷新数据。
毛豆啊 2017-01-11
  • 打赏
  • 举报
回复
引用 6 楼 tiewantn 的回复:
1,如果数据要在客户端做缓存(数据库),建议后台开service定时轮询服务器。 2,如果数据不需要做在客户端做缓存(数据库),到具体页面,调用接口请求服务器就可以了。 3,不用轮询,做im推送,当服务器数据更新后,通过im推送给客户端。
谢谢啦,那就用这个第一种了。
  • 打赏
  • 举报
回复
1.在app打开需要获取数据的时候获取最新的就可以了,提前获取最新数据存着有用? 2.轮询请求 3.socket长连接+服务器端推送
Jason Zhang~ 2017-01-11
  • 打赏
  • 举报
回复
不想轮询浪费流量,就只能是推送了咯。 后台数据变化发送推送过来,安卓收到推送(推送的时候可以把最新数据直接带过来,也可以收到推送了再去请求刷新数据)的时候,更新数据。
WebSocket客户端和服务端实例源码 WebSocket ws实例 HTML5 用java实现的服务端 Websocket与服务器的正常通信 众所周知,Web 应用的交互过程通常是客户端通过浏览器发出一个请求,服务器端接收请求后进行处理并返回结果给客户端,客户端浏览器将信息呈现,这种机制对于信息变化不是特别频繁的应用尚可,但对于实时要求高、海量并发的应用来说显得捉襟见肘,尤其在当前业界移动互联网蓬勃发展的趋势下,高并发与用户实时响应是 Web 应用经常面临的问题,比如金融证券的实时信息,Web 导航应用中的地理位置获取,社交网络的实时消息推送等。 传统的请求-响应模式的 Web 开发在处理此类业务场景时,通常采用实时通讯方案,常见的是: 轮询,原理简单易懂,就是客户端通过一定的时间间隔以频繁请求的方式向服务器发送请求,来保持客户端和服务器端的数据同步。问题很明显,当客户端以固定频率向服务器端发送请求时,服务器端的数据可能并没有更新,带来很多无谓请求,浪费带宽,效率低下。 基于 Flash,AdobeFlash 通过自己的 Socket 实现完成数据交换,再利用 Flash 暴露出相应的接口为 JavaScript 调用,从而达到实时传输目的。此方式比轮询要高效,且因为 Flash 安装率高,应用场景比较广泛,但在移动互联网终端上 Flash 的支持并不好。IOS 系统中没有 Flash 的存在,在 Android 中虽然有 Flash 的支持,但实际的使用效果差强人意,且对移动设备的硬件配置要求较高。2012 年 Adobe 官方宣布不再支持 Android4.1+系统,宣告了 Flash 在移动终端上的死亡。 从上文可以看出,传统 Web 模式在处理高并发及实时性需求的时候,会遇到难以逾越的瓶颈,我们需要一种高效节能的双向通信机制来保证数据实时传输。在此背景下,基于 HTML5 规范的、有 Web TCP 之称的 WebSocket 应运而生。 早期 HTML5 并没有形成业界统一的规范,各个浏览器和应用服务器厂商有着各异的类似实现,如 IBM 的 MQTT,Comet 开源框架等,直到 2014 年,HTML5 在 IBM、微软、Google 等巨头的推动和协作下终于尘埃落地,正式从草案落实为实际标准规范,各个应用服务器及浏览器厂商逐步开始统一,在 JavaEE7 中也实现了 WebSocket 协议,从而无论是客户端还是服务端的 WebSocket 都已完备,读者可以查阅HTML5 规范,熟悉新的 HTML 协议规范及 WebSocket 支持。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧