Android 中的回调函数揭秘
2016-06-13 09:57
330 查看
在学习Android的过程中,经常会遇到”回调函数”这个词,那么甚么是回调函数呢? 简单地说,回调函数就是通过其指针来调用的函数, 她不会被自己所在的对象调用, 只会在调用别人的方法的时候反过来被调用. 大家都知道,Android程序是通过java程序来实现的, java中是没有指针的, 因此在实现回调时都是通过接口和抽象类.
回调的过程可以简单的理解为,在A类中定义了一个方法,这个方法中用到了一个接口和该接口中的抽象方法,但是抽象方法 没有具体的实现, 需要B类去实现. 当B类实现该方法后, 它本身不会去调用这个方法. 而是传递给A类, 供A类去调用.这种机制就称为回调.
回调机制是将实现功能和定义分离的一种手段,市一中松耦合的设计思想. 接下来我们通过一段代码进行分析,具体如下:
(1).定义回调接口 ICallBack
(2).定义一个实现类 FooBar
在上述代码中, 第一段代码定义了一个回调接口ICallBack, 该接口中有一个postExec()方法, 接受一个ICallBack参数, 然后再doSth()方法中进行调用,这就是一个后回调函数的基本用法.
在Android开发中,会懂啊函数使用非常广泛. 下面列举两个回调函数的使用场景, 让大家更加直观的看到回调函数是如何使用的.
应用场景一,事件监听器的回调
上面的代码给按钮添加了一个事件监听器, 自己不会显示的去调用onClick()方法; 用户出发了该按钮的点击事件后,它会由Android系统来自动调用.
应用场景二:Activity生命周期中的回调
上面的代码是创建Activity时, 系统自带的onCreate()方法,该方法不会被认为的调用, 但它会在Android系统进程中自动调用.
好了,这就是关于Android中回调函数的介绍,我这里庙小,装不下大神,不喜勿喷哦!
回调的过程可以简单的理解为,在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中回调函数的介绍,我这里庙小,装不下大神,不喜勿喷哦!
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法