android-接口回调(精简)笔记总结

看了很多网上的文章越看越乱,所以首先回到概念,什么是回调?按照网上大多文章写的,就是两个类互相调用方法,一开始看着也是挺奇怪的,这个“互相”是怎么来的,那么我门就来举个栗子。

接口类:

public interface ContactInterface {
     
    public void callBackByTel(String answer);
     
}

Me类(其实就是调用类):

public class Me {
 
     public static void main(String[] args){  
          
         Me me = new Me();
         me.hasQuestion();
          
     }
      
     private void hasQuestion(){
         //现在有问题想不出来答案,想去问你
         You you = new You();
         you.setCallback("蜗牛", "某道题答案是什么?", new ContactInterface() {     /**       mark          **/

             
            @Override
            public void callBackByTel(String answer) {           /**       mark          **/
                System.out.println("我说:嗯,好的,我收到答案了:"+answer+",谢谢");
                 
            }
        });
         //你接到电话,起床开始思考问题
        new Thread(you).start();
     }
}

You类(实现接口):

public class You implements Runnable{
 
     
    private String who;
     private ContactInterface callBack;  
     public You() {
            // TODO Auto-generated constructor stub
        }
      
    //调用此方法就表示有人联系你了,注册到你这来
     public void setCallBack(String who,String question,ContactInterface callBack) {      /**       mark          **/

         this.who = who;    
         System.out.println("你说:当前联系到我的人是"+who+",问题是"+question);
            this.callBack =callBack;
        }
        
     public void handleThings(){
         //假如你现在正在想问题的答案,需要一点时间
         for(int i=0;i<100000;i++){  
                  if(i == 0){
                      System.out.println("你正在思考问题.....");
                  }
            }
          
         String answer = "答案是A";
         //想到问题的办法了
         System.out.println("你说:想到答案了,准备打回去给"+who+"告诉他答案");
         callBack.callBackByTel(answer);                                          /**       mark          **/
     }
 
    /* (non-Javadoc)
     * @see java.lang.Runnable#run()
     */
    @Override
    public void run() {
        try {
            Thread.sleep(1000);
            handleThings();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
是不是看起来乱七八糟的,什么你问我问题,你回答我,越看越乱。那么我们回到概念上,互相调用。

注意只看有 /**      mark     **/的方法(<Strong>里面的,可能因为代码块里面不给加粗),首先定义了接口

ContactInterface,里面有一个方法CallbackByTel
You感觉是一个线程,里面有一个setCallback的方法,传入的参数是接口ContactInterfacce,然后在后面把你相传入的东西作为callbackByTel传进去

Me像是android里面的Button回调,You就是Button,通过使用You的setCallback方法,传入参数,实现内部类。此时callBackByTel参数已经传过来了。

按个人的理解,setCallback就是一个调用,而callbackByTel就是一个回调。不知道理解的对不对,但是加上那些问来问去的输出之后感觉很多,所以想直接理解方法。下面附上输出的结果




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值