Android中应对封装好的数据库jar包请求Http数据的结果回调
Posted WYH_Healer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android中应对封装好的数据库jar包请求Http数据的结果回调相关的知识,希望对你有一定的参考价值。
android中应对封装好的数据库jar包请求Http数据的结果回调
本文中阐述如何对封装好的jar包中的方法进行监听获取请求的结果:
- 定义抽象函数
- 定义封装好的网络请求代码示例
- 执行请求结果数据处理
定义抽象函数
定义的回调的代码(获取数据后如何处理)内容一般是调用者来定义,所以首先要实现一个抽象函数用于调用者实现:
public interface OnRequestResult
/**
* 返回数据,处理成功获取返回数据的情况
* @param response
*/
public void onResult(int requestTag, Response response);
/**
* 网络异常,处理各类延时异常导致没有获取返回数据的情况,统一为网络异常
* @param code
*/
public void onNetErroe(int requestTag, int code);
定义封装好的网络请求代码示例
/**
* 登录代码块为例,传递封装好jar包中所需要的数据之后,执行定义的excutors方法
* @param userName
* @param password
* excutors方法参数解析:
* HttpLogin参数是用于区分属于各个类别的请求
* openClient是开始请求的方法,方法URL等已经封装进入jar包
* request是开始请求的数据的所携带的参数信息
*/
public void login(String userName, String password)
//自定义的Utils工具类中,在数据请求前用于判断是否有网络连接
if (!Utils.isNet((Activity) context))
//自定义的抽象函数用于调用者实现网络错误情况
onRequestResult.onNetErroe(HttpLogin, AppConstant.NET_ERROR);
return;
LoginRequest request = new LoginRequest();
request.setUserName(userName);
request.setPassword(password);
new excutors(HttpLogin, openClient, request, context).start();
执行请求结果数据处理
/**
* 请求结果
* 当有数据返回的时候就会执行end方法,如果没有就不会执行
*/
class excutors extends OpenExecutors
int requestTag;
boolean isTimeOut;
//定义网络超时的方法
Runnable run = new Runnable()
@Override
public void run()
isTimeOut = true;
if (context != null)
onRequestResult.onNetErroe(requestTag, AppConstant.NET_ERROR);
;
public excutors(final int requestTag, OpenClient client, Request request, Context context)
super(client, request, context);
this.requestTag = requestTag;
//延时定义网络超时异常处理任务
handler.postDelayed(run, RequstTimeOutMillise);
//封装好的获取返回结果
@Override
public void end(Response response)
//网络没有超时的情况,移除handler中的任务函数,成功获取返回数据执行调用者自定义代码块
if (!isTimeOut)
handler.removeCallbacks(run);
onRequestResult.onResult(requestTag, response);
调用函数处理结果数据
@Override
public void onResult(int requestTag, Response response)
if (requestTag == HttpClient.HttpLogin) // 首页数据
LoginResponse r = (LoginResponse) response;
if (r.isSuccess() && !StringUtils.isEmpty(r.getLogin()))
//成功获取数据,界面更新
@Override
public void onNetErroe(int requestTag, int code)
if (requestTag == HttpClient.HttpLogin)
showToast("网络异常,最新商品加载失败");
本文主要阐述了在封装好的网络请求的jar包的前提下,自定义一个类用于处理获取各个不同数据成功与失败的情况。本文主要涉及的内容:
1.定义接口的方法实现了类与类之间的通信
2.灵活运用handler机制延时处理网络加载异常的情况,以及在成功获取网络数据之后移除延时加载的任务。
以上是关于Android中应对封装好的数据库jar包请求Http数据的结果回调的主要内容,如果未能解决你的问题,请参考以下文章
1. 通过apache common封装好的HttpClient
okhttputils Android 一个改善的okHttp封装库使用