接口回调

来源:互联网 发布:无人快餐工厂 知乎 编辑:程序博客网 时间:2024/06/05 08:18

一、概述

又是一个高大上的名字,很装X,不过整体的思想结构还是不错的。总之,就是用规则逃避规则。
接口回调很大程序上是解决子线程不能返回数据的问题。假如有两个类MainActivity、HttpUtils,一个接口CallBack,接口回调是如下流程的:
1.MainActivity中执行一个HttpUtils中的一个方法:

HttpUtils.getData(path , new Callback(){    public void onSuccess(){        //do somtehing    }    public void onFail(){        //do something    }});

2.执行方法时,去HttpUtils中调用方法(是子线程),方法实际上通过调用MainActivity中接口CallBack对象,返回结果。

这里写图片描述

二、涉及到的程序如下:

1.主线程中:

HttpUtils.getData(path , new MyCallback());

2.被调用的方法中

new Thread(){    @Override    public void run() {        try {            URL url = new URL(path);            HttpURLConnection conn = (HttpURLConnection) url.openConnection();            conn.setRequestMethod("GET");            conn.setConnectTimeout(3000);            if(conn.getResponseCode() == 200){  //请求成功                InputStream is = conn.getInputStream();                String result = StreamTools.readStream(is);                System.out.println("result==="+result);                //成功之后,调用接口实现类中的成功方法                callback.onSuccess(result);//                  tv_result.setText(result);            }else{ //请求失败  500  -- 404  -- 403                callback.onFaile("请求失败。。状态码之外.");            }        } catch (Exception e) {            callback.onFaile("请求失败。。出现异常.");            e.printStackTrace();        }    }}.start();

3.接口中

/** * 声明一个公开的接口 */public interface ResponseCallBack {    /**     * 成功的时候调用的方法     * @param data  返回的数据     */    public void onSuccess(String data);    /**     * 失败之后调用的方法     * @param data     */    public void onFaile(String data);}
0 0
原创粉丝点击