java回调机制以及android中的回调方法
2016-03-07 00:12
399 查看
今天搞清楚了java的回调机制以及android中的回调方法的具体含义,只是感慨自己还是太小白了,加油!
首先引用维基百科上的定义: 在计算机程序设计中,回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。
定义:java中的回调是通过一个接口实现的
直接上示例:程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法。其中a程序中的call()方法就是回调方法。
caller类也就是A程序员写的a程序
接口的定义
其中接口中定义的方法printName()就是我们在b程序中想要实现的方法也是android中的自己写的onclick方法(此处以android中的onClickListener方法为例子,后面会详细提到)。
然后是B程序员写的b程序
测试类Test
结果:
回调成功
分析与总结
因为java中没有函数参数的概念,所以可以通过接口来实现回调。
记住一句话:B程序员通过接口使用a程序调用自己b程序中的方法,叫做回调。
————————————————————————————————————以下是Android中的分析
onClickListener方法为例子
Button继承自View类就是A程序员写的a程序类,setOnClickListener方法就是a程序中的 setCallFunu()方法,就是设置通过某个接口。后面的匿名内部类OnClickListener就是client类了,只不过换了个形式。
阅读了源码之后发现确实是这样的!
最后说一下android回调的作用:android开发者也就是程序员A定义好了这些接口和方法,使用者我们也就是程序员B自己实现了自己的OnClick方法,我们想调用自己的方法就要通过这样的回调机制实现。
学到了!
首先引用维基百科上的定义: 在计算机程序设计中,回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。
定义:java中的回调是通过一个接口实现的
直接上示例:程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法。其中a程序中的call()方法就是回调方法。
caller类也就是A程序员写的a程序
public class caller { MyCallInterface callInterface = null; public void setCallFunu(MyCallInterface callInterface){ this.callInterface = callInterface; } public void call(){ callInterface.printName(); } }
接口的定义
public interface MyCallInterface { public void printName(); }
其中接口中定义的方法printName()就是我们在b程序中想要实现的方法也是android中的自己写的onclick方法(此处以android中的onClickListener方法为例子,后面会详细提到)。
然后是B程序员写的b程序
public class Client implements MyCallInterface{ public void printName(){ System.out.println("回调成功"); } }
测试类Test
public class Test { public static void main(String args[]){ caller caller = new caller(); caller.setCallFunu(new Client()); caller.call(); } }
结果:
回调成功
分析与总结
因为java中没有函数参数的概念,所以可以通过接口来实现回调。
记住一句话:B程序员通过接口使用a程序调用自己b程序中的方法,叫做回调。
————————————————————————————————————以下是Android中的分析
onClickListener方法为例子
Button.setOnClickListener(new OnClickListener(){ public void OnClick(){ System.out.println("我写的点击效果"); } });
Button继承自View类就是A程序员写的a程序类,setOnClickListener方法就是a程序中的 setCallFunu()方法,就是设置通过某个接口。后面的匿名内部类OnClickListener就是client类了,只不过换了个形式。
阅读了源码之后发现确实是这样的!
最后说一下android回调的作用:android开发者也就是程序员A定义好了这些接口和方法,使用者我们也就是程序员B自己实现了自己的OnClick方法,我们想调用自己的方法就要通过这样的回调机制实现。
学到了!
相关文章推荐
- android--存储
- thinking for android's animation
- ImageView 的使用
- Anubis,一个支持Android apk(Android binaries)行为分析的在线沙盘
- Android开发自学笔记(Android Studio) 目录
- android群英传之自定义View--对现有控件进行扩展(1)
- Android掌中游斗地主游戏源码完整版
- Android Studio实现代码混淆
- Android 定时器实现方式
- Android 计算地球上任意两点(经纬度)距离
- Android 日期时间选择控件
- Android 翻滚的TextView
- Android 将数据库文件保存至sdcard中
- Android 本地文件管理类
- Android 读取本地txt文件中的内容
- Android应用安全之Content Provider安全
- px in pt dp(dip) sp in Android
- android监听左右滑动事件
- 【第一行代码】Android中的fragment
- 《Android开发艺术探索》读书笔记 (5) 第5章 理解RemoteViews