# Android 中的回调函数揭秘

作者: 所以一直走啊 | 来源:发表于2016-06-12 23:46 被阅读378次

在学习Android的过程中,经常会遇到"回调函数"这个词,那么甚么是回调函数呢? 简单地说,回调函数就是通过其指针来调用的函数, 她不会被自己所在的对象调用, 只会在调用别人的方法的时候反过来被调用. 大家都知道,Android程序是通过java程序来实现的, java中是没有指针的, 因此在实现回调时都是通过接口和抽象类.
回调的过程可以简单的理解为,在A类中定义了一个方法,这个方法中用到了一个接口和该接口中的抽象方法,但是抽象方法 没有具体的实现, 需要B类去实现. 当B类实现该方法后, 它本身不会去调用这个方法. 而是传递给A类, 供A类去调用.这种机制就称为回调.
回调机制是将实现功能和定义分离的一种手段,市一中松耦合的设计思想. 接下来我们通过一段代码进行分析,具体如下:

  • (1).定义回调接口 ICallBack
    //声明一个接口
    public interface ICallBack{
       void postExec();
    }
  • (2).定义一个实现类 FooBar
    public void class  
{
    private ICallBack callback;
    public void setCallBack(ICallBack callBack){
       this.callBack = callback;
    }
    public void doSth(){
       callBack.postExec();
    }
    public static void main(String args[]){
       FootBar foo = new FootBar();
       foo.setCallBack(new ICallBack(){
         public void postExec(){
           Log.i("info","method executed!");
         }
       });
       foo.doSth();
    }
}

在上述代码中, 第一段代码定义了一个回调接口ICallBack, 该接口中有一个postExec()方法, 接受一个ICallBack参数, 然后再doSth()方法中进行调用,这就是一个后回调函数的基本用法.

在Android开发中,会懂啊函数使用非常广泛. 下面列举两个回调函数的使用场景, 让大家更加直观的看到回调函数是如何使用的.

应用场景一,事件监听器的回调

    Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new Button.OnclickListener(){
    //回调函数
    @override
    public void onClick(View view){
      //doSomeThing...
    }
});

上面的代码给按钮添加了一个事件监听器, 自己不会显示的去调用onClick()方法; 用户出发了该按钮的点击事件后,它会由Android系统来自动调用.

应用场景二:Activity生命周期中的回调

    @override
public void onCreate(Bundle saveInstanceState){
   super.oncreate(saveInstanceState);
   ...
}

@override
public void onResume(){
   super.onResume();
   ...
}

上面的代码是创建Activity时, 系统自带的onCreate()方法,该方法不会被认为的调用, 但它会在Android系统进程中自动调用.
好了,这就是关于Android中回调函数的介绍,我这里庙小,装不下大神,不喜勿喷哦!

相关文章

  • # Android 中的回调函数揭秘

    在学习Android的过程中,经常会遇到"回调函数"这个词,那么甚么是回调函数呢? 简单地说,回调函数就是通过其指...

  • ReactNative前端与原生事件交互----Android原

    一、Android原生向RN传递数据(通过回调函数的方式) 在MyNativeModule中添加dataToJS回...

  • Android回调函数机制那点事

    引言 在Android的学习过程中经常会听到或者见到“回调”这个词,那么什么是回调呢?所谓的回调函数就是:在A类中...

  • 使用Android Junit时,在testcase中创建的线程

    第一次用android junit,在testcase中调用了产品代码中的函数,并注册了回调函数会在另一个线程中调...

  • apply和call语句

    运动框架的应用实例 结合 异步和回调函数 中的 「回调函数2」我们可以试图在回调函数中,用this表示oDiv对象...

  • javascript高级-

    函数类型中,比较常用的是匿名函数和回调函数,一般来说,回调函数是以匿名函数的形式来进行表现的。回调函数在事件监听,...

  • JAVA回调函数ANDROID中典型的回调地方

    在计算机中回调函数是指通过函数参数传递到其他代码类的,某一块可执行代码的引用,这以设计允许了底层代码调用者在高层定...

  • JavaScript函数_08回调函数

    回调函数 回调函数(回调),当我们把某个函数作为参数传递给另一个函数的时候,这个函数就是回调函数 回调函数的基本写...

  • python之回调函数和装饰函数

    一.回调函数 1.回调函数的概念: 是在某一函数中调用另一个函数变量方式,来执行函数.回调函数不是有实现方调用,...

  • Vue - day8

    day8 Promise 引入 回调地狱 回调函数中 嵌套 其他回调函数 例子: 多个文件依次读取 解决方法: ...

网友评论

  • a63f31355749:我还是不太明白,如果我想在Adapter里面调用一个异步任务类的方法来改变Adapter里面的某个控件的样式应该怎么写呢??
  • ec815467f17d:希望修改一下错别字
    所以一直走啊: @小布要长大 不好意思,半夜码字,视力不好,没校对就睡觉了。

本文标题:# Android 中的回调函数揭秘

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