对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()方法,由此产生了回调。
这就是我理解回调的过程

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

相关文章推荐

android中的回调机制

  • 2015-09-02 14:37
  • 23KB
  • 下载

Android的回调机制

  • 2014-08-21 15:30
  • 252KB
  • 下载

对于Android中接口回调机制的理解

对于接口回调机制首先要弄明白的问题是为什么需要它,也就是接口回调能为我们解决什么问题:在开发过程中我们经常会遇到一些有关触发执行的问题,比如用户触发按钮,然后程序就执行了一系列的操作的比如注册登录啊;...

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

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

由浅入深理解Android中的回调机制(一)

什么是接口回调?来先看看接口回调的定义吧:可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。什么意思?反正我是没看懂,哈哈(#黑线),这么官...

理解Android中的回调机制

Android中使用回调机制特别多,今天想深入理解下回调机制是什么原理,为什么要用回调呢?有什么优点?比直接调用函数好在哪里? 百度很多,说指针的很多,没看懂。 参考大牛的文章,让我明白很多。参见:...

android官方Api 理解Activity生命周期的回调机制(适合有基础的人看)

原文地址:http://www.android-doc.com/training/basics/activity-lifecycle/starting.html#lifecycle-states ...

浅析 android 接口回调机制

本篇博文,主要浅显的讲解了 android 开发中对于接口回调的利用,再此予以分享欢迎大家多提宝贵意见谢谢。

Android 回调机制在监听用户界面操作中的体现

一 回调函数 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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