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数据的结果回调的主要内容,如果未能解决你的问题,请参考以下文章

Android之封装好的异步网络请求框架

1. 通过apache common封装好的HttpClient

okhttputils Android 一个改善的okHttp封装库使用

Eclipse如何导入jar包

Android Studio中gradle命令指定打jar包...

Android开发心得——使用第三方jar包经验