欢迎使用CSDN-markdown编辑器

来源:互联网 发布:jo抢购软件下载 编辑:程序博客网 时间:2024/06/05 14:23

Android 中的回调函数揭秘

在学习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生命周期中的回调

    @overridepublic void onCreate(Bundle saveInstanceState){   super.oncreate(saveInstanceState);   ...}@overridepublic void onResume(){   super.onResume();   ...}

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

0 0
原创粉丝点击