美文网首页
再次理解回调的含义

再次理解回调的含义

作者: HWilliamgo | 来源:发表于2018-02-09 15:16 被阅读49次

    哪个类实现了回调监听接口中的方法,就回去调用哪个类中的对应的方法。


    主函数中调用HttpUtilsget方法,第二个参数传入View的实例,那么当get方法内部执行到listener调用方法的地方的时候,就会去回调View中的方法。
    这就是回调方法
    例子:
    //回调接口
    public interface Listener {
        void onSucceed(String info);
        void onFailed(String info);
    }
    
    //模仿网络访问类
    public class HttpUtils {
        //参数是url和对应的监听器
        public void get(String url, Listener listener){
            //开启延时的一个线程模拟网络访问
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        Thread.sleep(1500);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    //对网络访问结果进行判断并接着调用相应的监听器的方法
                    if (url==null){
                        listener.onFailed("error");
                    }else {
                        listener.onSucceed("anyInfo");
                    }
                }
            }).start();
        }
    }
    
    //实现了监听器的类,那么如果调用HttpUtils中的get()方
    //法,并且将View的实例作为监听器传入时,当网络访问得
    //到结果时,就会回头调用View类中的如下两个方法。
    public class View implements Listener{
        @Override
        public void onSucceed(String info) {
            System.out.print(info);
        }
    
        @Override
        public void onFailed(String info) {
            System.out.print(info);
        }
    }
    

    入口main函数

    public class Main {
        public static void main(String[] args) throws Exception {
            View view = new View();
            new HttpUtils().get("anyUrl", view);
        }
    }
    

    点击run : 延时一秒后打印:anyInfo

    相关文章

      网友评论

          本文标题:再次理解回调的含义

          本文链接:https://www.haomeiwen.com/subject/qknftftx.html