赞
踩
版权声明:本文为代码部落原创文章,转载请注明出处。
前言
前段时间项目中碰到一个将请求分页的任务。是将一个网络请求分成N次来完成,最终总量不变,以此减轻服务器的压力。考虑到有多条协议都要做分页,因此考虑整理出一个统一规范简单的分页请求框架。
结构设计
因为打算整理成统一的工具,因此我们必须将分页流程与业务逻辑分开。我们的代码里只统一管理整个分页请求的过程,对如何请求,是否还有下一页请求暂不处理,这部分业务逻辑让调用者根据需要去具体实现。
定义接口
思考一下。这个分页请求的我们应该定义出一些必要的操作。初始化,网络请求,判断是否继续,是否成功等等。我画了一张流程图如下:
因此我们抽象出一些必要的接口:
Java
public interface ReqPagingListener {
/**
* 是否还有下一页请求
*/
boolean hasNext();
/**
* 发起请求
* @param index 当前请求的次数
*/
void onRequest(int index, SimpleCallBack callBack);
/**
* 初始化
*/
void onInit();
/**
* 所有任务请求完成
*/
void onFinish();
/**
* 请求失败
*/
void onFail();
}
/**
* 简单无数据回调
*/
public interface SimpleCallBack {
void onSuccess();
void onFail();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
publicinterfaceReqPagingListener{
/**
* 是否还有下一页请求
*/
booleanhasNext();
/**
* 发起请求
* @param index 当前请求的次数
*/
voidonRequest(intindex,SimpleCallBackcallBack);
/**
* 初始化
*/
voidonInit();
/**
* 所有任务请求完成
*/
voidonFinish();
/**
* 请求失败
*/
voidonFail();
}
/**
* 简单无数据回调
*/
publicinterfaceSimpleCallBack{
voidonSuccess();
voidonFail();
}
实现分页逻辑
分页请求的逻辑,我们可以看成是一个迭代的过程:
Java
/**
* 发起请求
*/
private void request() {
//如果当前页请求次数未达到最多重试次数
if (mReqIndex < FAIL_AGAIN_TIME) {
//还有下一页数据,继续
if (mListener.h
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。