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

毛豆啊 2017-01-10 07:17:46
在android中,如果服务器对设备上的数据有更新,那么设备如何自动的去获取新的数据。比如服务器最开始返回给android设备一个用户信息,用户名:张三,年龄:25,用户id:123,职位:员工。后来后台对用户信息进行了修改,修改为,用户名:张三,年龄:28,用户id:111,职位:经理。这时候如果想要设备这里自动获取修改后的信息,可以怎么实现?可以在android端开启一个service,然后在里面写一个定时器,隔一段时间请求一次服务器的接口,如果有更新,就把更新的数据获取到,然后更新android设备上的信息吗?或是有其他什么好的方法,框架,能推荐下吗?
...全文
2980 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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
  • 打赏
  • 举报
回复
不想轮询浪费流量,就只能是推送了咯。 后台数据变化发送推送过来,安卓收到推送(推送的时候可以把最新数据直接带过来,也可以收到推送了再去请求刷新数据)的时候,更新数据。

80,472

社区成员

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

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