您的位置:首页 > 移动开发 > Android开发

Android 中的回调函数揭秘

2016-06-13 09:57 330 查看
在学习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中回调函数的介绍,我这里庙小,装不下大神,不喜勿喷哦!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息