Syncing too often, can be the worst idea for the performance of your application.
Video Link
Do not Over Sync
对于用户来说,有些信息是要保持最新的(天气、账户余额等等),有些信息却不必时刻更新,太频繁的同步操作反而过犹不及:
- 耗电量:比起待机,网络请求会消耗更多的电量
- 网络流量:同样,会占用带宽,小心用户在收到流量账单变得抓狂
Sync Less, Win More
优化缓存的关键在于区分数据是当下立即需要的还是稍后请求也无伤大雅的,比如,用户进行下拉刷新,显然需要马上向服务器请求数据。而后台进行的数据下载与上传,相比之下就不那么重要。
Don’t Always Poll, Just Listen
不要试图经常轮询Server请求新数据,这并没有什么卵用,要知道很多情况下数据在服务端根本就没有更新。
使用诸如Google Cloud Messaging的服务进行从Server发起的push —— What the hell is this?
由于天朝的特殊性,GCM无法使用,因此诞生了诸如极光推送等一系列替代品,一些有能力的大厂干脆自己实现消息推送系统,可以参考微信这篇文章:Android微信智能心跳方案
如果不得不采用客户端轮询来做,考虑二进制退让算法
因地制宜
下面这个听起来就有一些炫酷了:根据用户当前不同的行为模式采取不同的同步策略,比如用户在驾驶时、跑步时、睡觉时……
比如,当你监测到用户刚刚从8小时的睡眠中醒来并开启手机时,不妨马上进行一次同步。
根据是否正在充电、是否连接wifi等配置信息,调节同步时间:
然而,场景那么多,你要怎么办呢?
幸运的是,你并不需要为此实现太多复杂的逻辑,参考GCM Network Manager