对于这篇文章的思考和整理:通过后台数据预获取技术实现性能提升
只是一些思考没有完整处理方案
希望处理的问题
网络问题处理
- 无网络/网络连接失败的时候
需要显示缓存的数据(用户之前游览过的数据)
需要在手机空闲并且连接 wifi 的情况下缓存一部分新的数据,在用户查看数据的时候加快速度,相当于数据预加载功能,
- 网络慢的时候
应用任务种类及其处理时机问题
- 一些重要而且具有一定重量级的任务的执行时机
当用户打开应用的时候再去执行花费会造成一定的用户等待时间,即使是在后台运行也可能会使应用变得卡。
- 一些不重要但是需要被执行的任务。
这类任务也不建议在用户使用 app 的时候执行,可以在手机空闲的时候执行,或者在 UI 退到后台的时候执行。
- 一些马上可能使用到的功能
在用户使用 App 的时候提前预测用户下一步动作,提前做一些预处理工作。这里的预处理工作可以是从网络中加载数据,也可以是从本地数据库中读取数据。
需要处理的具体问题和处理方案
网络问题
需要做到下面几项
- 缓存历史请求的数据。在无网的时候可以直接使用
- 后台预加载数据。实现在无网/弱网状态下也能很快加载数据,在 网络正常 情况下也可以先显示预加载的数据,然后请求新数据
- 缓存的管理。设置 缓存可占用物理内存 最大值功能
方案:
- 数据库存储之前加载过的数据
- 利用 retrofit 和 http 的特性实现加载离线数据
用户体验思考:增加上次阅读到哪里的标记(类似 今日头条 实现的上次阅读到这里的标记)
应用任务处理时机问题
任务处理:
- Android 5.0 之后使用 JobSchedule 实现后台处理任务
- 使用监听 App的Backgorund和Foreground 实现应用切换到后他的时候开启一些任务,当 app 回到前台的时候停止任务的处理减少性能消耗,保证应用流程运行
- 监测手机的状态,如果手机内存充足,cpu 空闲,那么可以运行重量级任务
- 利用人工智能学习用户的习惯
利用人工智能确定用户什么时候会打开应用,什么时候用户会连接 wifi,什么时候手机处于弱网状态,什么时候手机处于空闲 wifi 状态。
利用人工智能确定 后台任务 的执行时机。