本文讨论以下两个内容: 1. 回调函数 2. 回调机制在 Android框架 监听用户界面操作中的作用 一 回调函数 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
为什么要使用回调函数
因为可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型、某些限制条件(如返回值为int)的被调用函数。 如果想知道回调函数在实际中有什么作用,先假设有这样一种情况,我们要编写一个库,它提供了某些排序算法的实现,如冒泡排序、快速排序、shell排序、shake排序等等,但为使库更加通用,不想在函数中嵌入排序逻辑,而让使用者来实现相应的逻辑;或者,想让库可用于多种数据类型(int、float、string),此时,该怎么办呢?可以使用函数指针,并进行回调。
Java 中没有指针的概念,通过接口和内部类的方式实现回调的功能: 1. 定义接口 Callback ,包含回调方法 callback() 2. 在一个类Caller 中声明一个Callback接口对象 mCallback 3. 在程序中赋予 Caller对象的接口成员(mCallback) 一个内部类对象如 new Callback(){ callback(){ //函数的具体实现 } 这样,在需要的时候,可用Caller对象的mCallback接口成员 调用callback()方法,完成回调. 二、回调机制在 Android框架 监听用户界面操作中的作用 Android事件侦听器是视图View类的接口,包含一个单独的回调方法。这些方法将在视图中注册的侦听器被用户界面操作触发时由Android框架调用。回调方法被包含在Android事件侦听器接口中: 例如,Android 的view 对象都含有一个命名为 OnClickListener 接口成员变量,用户的点击操作都会交给 OnClickListener的 OnClick() 方法进行处理。 开发者若需要对点击事件做处理,可以定义一个 OnClickListener 接口对象,赋给需要被点击的 view的接口成员变量OnClickListener,一般是用 view 的setOnClickListener() 函数来完成这一操作。 当有用户点击事件时,系统就会回调被点击view的OnClickListener接口成员的OnClick()方法。 实例(对于Android界面上Button点击事件监听的模拟): 1.定义接口 public interface OnClickListener { public void OnClick(Button b); } 2. 定义Button public class Button { OnClickListener listener; public void click() { listener.OnClick(this); } public void setOnClickListener(OnClickListener listener) { this.listener = listener; } } 3. 将接口对象OnClickListener 赋给 Button的接口成员 public class Activity { public Activity() { } public static void main(String[] args) { Button button = new Button(); button.setOnClickListener(new OnClickListener(){ @Override public void OnClick(Button b) { System.out.println("clicked"); } }); button.click(); //user click,System call button.click(); } } 参考资料: 百度百科: 回调函数 http://baike.baidu.com/view/414773.html?fromTaglist java中回调函数的实例说明 http://www.blogjava.net/songfei/articles/126093.html Android事件侦听浅谈 http://developer.51cto.com/art/201001/180846.htm
|
分享到:
相关推荐
很多这种类型的dialog,界面千变万化,于是我建立了一个通用自定义dialog,可以实现...2、不管是在Fragment,还是Activity都可以实例化该dialog,并且实现dialog按钮的监听回调; 3、在dialog按钮点击后,自动消失。
Android监听自身卸载,弹出用户反馈调查
需要将4个项目都导入开发工具中 其中项目分别为 register_service 后台服务 register_service_aidl 外部API与service的AIDL接口 register_service_api 外部API(即暴露给UI的接口) register_ui 注册UI 调用关系为 ui-...
监听Android软键盘弹出和收起事件(所有代码都是抽离自facebook/react-native源码中, 亲测有效, 放心食用)。回调事件方法参数包含键盘是否弹出(isShow)、键盘高度(keyboardHeight)、屏幕可用高度(screenHeight)、屏幕...
android 事件监听机制,通过监听来控制飞机位置。
说明: http://blog.csdn.net/yangzhaomuma/article/details/50967851
android监听app的启动,在API20以前用ActivityManager获取栈顶最近的应用,但API20以后捕捉不到手机上软件包名,这个更改可以获取最近打开app的包名,从而监听打开的APP。
首先在布局文件中使用控件的标记来配置所需要的各个控件,然后在 主Activity中获取到该控件,给其添加监听器来监听其操作,最后在控制台输出所操作的内容。 III. 实现步骤 在Eclipse中创建 Android项目,名称为 ...
在Android开发中 我们经常会需要在Android界面上弹出一些对话框 比如询问用户或者让用户选择 关于Android Dialog的使用方法 已经有很多blog做出了详细的介绍(比如博客:7种形式的Android Dialog使用举例) 但是只是...
主要介绍了Android中的webview监听每次URL变化实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
这个项目已经很老了,其实是从 Android 4.4.4 的系统 Settings 中 copy 出来的。 其实原理都是编译运行系统 ...Android 操作以太网的项目,提供了监听网线插拔和以太网开关,设置以太网静态IP、网关、子网掩码、dns等。
通过JNI接口静态注册的native方法去创建线程,同时提供native回调Java的方法。通过这个框架可以去实现线程监听某一个状态,然后回调Java的方法(如发消息去通知顶层,实现显示)
个人免签监测APP源码 微信支付宝 实时捕获回调收款通知!。 能监听支付宝转账收款通知 针对由于老旧版本app的各种性能及BUG问题,目前老旧版本的短信监测回调APP版本存在几个通病。1、对于手机性能,网络方面要求高...
主要介绍了android监听返回按钮事件的方法,涉及Android事件监听的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
Android 监听EditText变化事件
主要给大家介绍了Android在Fragment中实现监听触摸事件的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
设置手机WiFi便携热点,并且监听热点打开与关闭,详情请参见我的博客http://blog.csdn.net/u011520181/article/details/46496377
android 后台监听按键事件方法及demoandroid 后台监听按键事件方法及demo
android网络监听变化,判断当前是什么网络类型,实时监听。android网络监听变化,判断当前是什么网络类型,实时监听。android网络监听变化,判断当前是什么网络类型,实时监听。android网络监听变化,判断当前是什么...
Android 监听百度地图缩放事件