对Android 回调机制的一些理解

原创 2016年08月30日 23:23:24

最近在弄关于Android 回调的问题,对其做一下自己的理解。

一:什么是Android的回调?

       在A类中定义了一个方法,这个方法中用到了一个接口和该接口中的抽象方法,但是抽象方法没有具体的实现,需要B类去实现,B类实现该方法后,它本身不会去调用该方法,而是传递给A类,供A类去调用,这种机制就称为回调。

二:关键代码

     (1) 我在MyButton类中声明如下:


//1:声明接口
  public  interface OnClickListener{
      public  void onClick();
  }
//2:,声明接口变量,
  private OnClickListener  mlistener;

  //3:创建方法调用接口
  public void setOnClickListener(OnClickListener listener){
      mlistener=listener;
  }
//4:通过变量调用抽象方法
  mlistener.onClick();
  (2)在B类的代码如下
  
private MyButton myButton;       //这里我是自定义的Button
myButton.setOnClickListener(new MyButton.OnClickListener() {    
    @Override
    public void onClick() {
     System.out.println("hello world");
}});
(3)再次理解回调机制,为什么说"需要B类去实现,B类实现该方法后,它本身不会去调用该方法,而是传递给A类,供A类去调用?"
   我们在A类中定义了一个接口,接口当中还含有一个抽象方法,这个抽象方法没有具体的实现,当我需要时候自己去实现这个方法,比如这里的B类,这句话可能难以理解:B类实现该方法后,它本身不会去调用该方法,而是传递给A类,供A类去调用,或许会认为,在B类的onClick()方法中我不是写了具体的实现嘛,其实真的是这样吗?
来看一下相关源码。
由上图可知Button是继承View的,所以为了方便,我就在Android 的View类中查看源码。
在View类中有setOnClickListener()方法,如图:
以下两图是关键代码:
 先看下performClick()方法:
在父类中我们要用到onClick()方法,但是父类却没有去实现该方法,而是定义了一个方法setOnClickListener(OnClickListener l),如果子类想要自己能够响应点击事件,则它就必须重写父类的该方法,实现OnClickListener接口和它的onClick()方法。在子类实现该接口和方法后,将其通过参数传递给父类,在父类中执行onClick()方法。
再看OnTouchEvent()方法


由此可以看出在OnTouchEvent()方法中调用了performClick()方法,由此产生了回调。
这就是我理解回调的过程

版权声明:本文为博主原创文章,未经博主允许不得转载。

回调机制的一些理解

回调机制类似于QT中的事件机制,当程序运行至某处或者达到某种状态时,会自动调用某个方法method。可以在被自动调用的方法method内部添加代码完成某些操作,从而实现需求。例如,网络框架的on_in...
  • jigetage
  • jigetage
  • 2017年02月10日 00:25
  • 216

理解Java回调机制

其实对于回调机制,在实际使用中还是经常用到的。但好笑的是,一直没能对所谓的回调的概念有一个很清晰的理解。 最近抽空看一些书的时候,老是时不时的提到回调的概念。那好吧,正好抽空来简单总结总结,加深一下印...
  • ghost_Programmer
  • ghost_Programmer
  • 2015年03月03日 16:07
  • 2982

关于大数据的一些个人理解

前几天商学院的校友问了我几个关于大数据的问题,一看都是非常专业且典型的问题, 相信大家听这个词听得太多了也有很多疑问,于是我总结了下自己的理解,欢迎一起讨论。 1. 现在大数据很时髦,多大的数...
  • witforeveryang
  • witforeveryang
  • 2014年12月23日 20:02
  • 1076

【Java/Android】对回调机制的理解

从一开始接触回调机制到现在,一直不太明白这其中的过程和原理。直到最近在网上混了很久,才突然明白。对于我这个Android小白还是一件很值得开心的事情。 今天特此在这里写下来我对回调机制的愚见,也做个留...
  • dfghhvbafbga
  • dfghhvbafbga
  • 2016年03月29日 21:39
  • 251

Java以及Android回调机制的一些理解

安卓的View如Button,ImageView都有事件监听,而事件监听就是一个回调函数。回调函数在实际的应用中也是十分的重要。网上也讲过很多回调函数的,我也只是写一写自己的感悟,以及对回调函数的理解...
  • qq_28251907
  • qq_28251907
  • 2016年03月10日 20:32
  • 337

Android回调机制的理解

定义: 所谓回调就是说一个程序里面有一个函数a,我在这个程序里面调用b函数,我希望b函数来调用我的a函数,这个a函数就叫做回调函数。(网上看了好久才明白0-0) C++对回调的实现: 比如说我在程序里...
  • GeiZuoZuoZuo
  • GeiZuoZuoZuo
  • 2014年12月01日 20:20
  • 733

Android 回调接口是啥,回调机制详解

首先解决啥是回调: 举个例子:某天,我打电话向你请教问题,当然是个难题,你一时想不出解决方法,我又不能拿着电话在那里傻等,于是我们约定:等你想出办法后打手机通知我,这样,我就挂掉电话办其它事情去了。...
  • a78270528
  • a78270528
  • 2015年07月16日 22:45
  • 14005

回调机制详解

今天遇到一位码友问我如何在异步加载完毕后获得异步的返回值,当时我思考了下就让他在异步完成后回调一下将值返回……因为对方是初学者我就给他简单解释了下Android的回调……说了一下午他都没弄明白……原因...
  • aigestudio
  • aigestudio
  • 2014年11月06日 22:23
  • 10402

我对Android的理解

前言写这篇文章是为了和大家描述下我对Android的理解,同时会讲述下我后面的技术规划,希望能够对大家有点参考价值。大家都想学好Android,那么怎么才能学好呢?这个真不好说,但是我可以和大家交流下...
  • singwhatiwanna
  • singwhatiwanna
  • 2015年07月09日 10:54
  • 38170

我对android中Activity的理解

一、activity是什么 在我们的应用
  • w815878564
  • w815878564
  • 2014年06月12日 09:16
  • 1142
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对Android 回调机制的一些理解
举报原因:
原因补充:

(最多只允许输入30个字)