课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
大家在使用app软件的时候是否对软件的响应功能有过了解呢?今天我们就通过案例分析来学习一下app软件的网络请求与应答之间的优化。
1. 页面返回的时候取消网络请求
在一个界面进行多个请求的时候,而有可能用户马上点击了返回按钮,那么如果是使用了AFNetworking的情况,此时ViewController不会马上销毁,需要等到网络请求返回并执行完毕block后才会销毁此ViewController。
那么会存在2个问题:
网络请求返回的数据没有使用,浪费流量。
ViewController销毁延迟,内存不能及时释放。
1.1 记录所有的请求
将页面中进行的所有请求记录,包括controller和view中发起的请求,当然设计为不是强制的,而是通过根据业务选择添加。采用BaseViewController的方式,每一个ViewController都需要继承BaseViewController,然后添加添加请求和取消请求的方法。
1.2 ViewController添加请求
在ViewController发起的请求,那么直接将请求返回的NSURLSessionDataTask,调用BaseViewController的- (void)addSessionDataTask:(NSURLSessionDataTask *)task;记录。
1.3 View的添加请求
如果是在View中发起的请求,那么需要根据View来获取所在的ViewController。创建BaseView,让发起请求的View继承BaseView,在BaseView中实现添加记录请求的方法。
2. 同一个请求多次请求时,短时间忽略相同的请求
当进行刷新操作时,如果在请求还没有返回之前,一直在刷新操作,不管是狂点还是乱点。那么一个请求发出后,短时间内可以不进行重复请求。
代码实现见下面的BaseViewModel。
3. 同一个请求多次请求时,取消之前发出的请求
如果是在搜索操作,那么每次输入关键字的时候,之前发出的请求可以取消,仅仅显示后的请求结果。
4. 发送的请求,多次尝试并确保成功
需要确保请求成功,并且有可能页面已经摧毁。那么请求需要加入到单例中,在单例中进行多次请求。添加一个网络是否可用的判断,当网络不能使用时,暂停尝试。
作者:蝴蝶之梦天使
节选:简书
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!