• android 回调的理解(结合接口)


    • 什么是回调

    回调其实是一种双向调用模式,也就是调用方在接口被调用时也会调用对方的接口。通俗的解释为:类A调用了类B中的方法1,然后类B最后又反过来调用类A中的方法2,即把结果返回给类A。

    • 回调的具体实现(通过接口)

       1、Class A实现接口CallBack callback——背景1

       2、class A中包含一个class B的引用b ——背景2

       3、class B有一个参数为callback的方法f(CallBack callback) ——背景3

       4、A的对象a调用B的方法 f(CallBack callback) ——A类调用B类的某个方法 C

       5、然后B就可以在f(CallBack callback)方法中调用A的方法 ——B类调用A类的某个方法D

      这里通过一个经典的例子来说明回调的具体实现机制,在这个机制里,包含两个类和一个接口,接口的定义如下:

    //相当于接口InA
    public interface BoomWTC{
      //获得拉登的决定
      public benLaDengDecide();
    
      // 执行轰炸世贸
      public void boom();
    }

      类A的定义如下,它作为一个主类,实现了接口

    //相当于class A
    public class At$911 implements BoomWTC{   
      private boolean decide;
      private TerroristAttack ta;      //类B
    
      public At$911(){      //构造函数
        Date now=new Date();
        SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm");
        this.dicede= myFmt.format(dt).equals("01/09/11 09:44");
        this.ta=new TerroristAttack();
      }
    
      //获得拉登的决定
      public boolean benLaDengDecide(){
        return decide;
      }
    
      // 执行轰炸世贸
      public void boom(){
        ta.attack(new At$911);//class A调用class B的方法传入自己的对象,相当于【you call me】
      }
    }

      类B的定义如下:

    public class TerroristAttack{
      public TerroristAttack(){
      }
    
      public attack(BoomWTC bmw){   //调用类A中的方法
        if(bmw.benLaDengDecide()){    /*class B在方法中回调class A的方法,相当于【i call you back】*/
           
        }
      }
    }

       从例子可以看出,类B是通过接口回调了类A的方法

     程序猿必读

  • 相关阅读:
    福大软工 · 第七次作业
    git分支重命名
    vscode左侧文件不同颜色标识含义
    正则表达式匹配指定字符区间的内容,且不包含指定字符
    git如何撤销工作区的修改
    git查看某个文件的提交历史
    扫盲篇--远程桌面连接
    git merge后如何撤销
    element-ui+vue-treeselect校验
    typeof 踩坑总结
  • 原文地址:https://www.cnblogs.com/longzhongren/p/6111782.html
Copyright © 2020-2023  润新知