写在前面,最近对回掉函数有了更深刻的认识,现在记录如下。由于在家看不到底层代码,在公司不能访问外网,现在只能凭靠记忆写这篇博文了,写错的地方还希望大神们指出来


其实给组件设置监听就是最典型的回掉函数的实例。为此专门看了下底层的控件View控件。

  1. 在View.java中,定义了各种接口,比如OnClickListener、OnTouchListener、OnLongClickListener、OnScrollListener、OnDragListener等等各种接口
  2. 然后在View.java中设置相应的set方法和全局变量mOnClickListener,在set方法中为mOnClickListener赋值。比如:setOnClickListener(OnClickListener listener)。
  3. 最后在View.java中要有(理论上)调用该接口中方法的地方,注意判断全局变量mOnClickListener是否为空。——比如在onTouchevent中去调用

以上就完成了接口(回掉)的定义。也可以称之为函数(方法)理论上的流程。因为毕竟只是定义了接口。而方法实际的流程,也就是实际的操作是在另外一个类中,比如我们平时对一个Button去setOnClickListener(OnClickListener listener),就是对该接口的实现,也称之为对该接口的回掉。

对接口的回掉时要在另外一个类中做如下操作:

  1. 导包eg:import android.view.View.OnClickListener;
  2. 必须要在控件初始化的时候set该接口eg:在OnCreate中初始化Button的时候btnButton.setOnClickListener(new OnClickListener());——比如在OnCreate中
  3. 要实现接口中的方法。

以前总结过事件监听的四种方法,由于事件监听和回掉是一个原理,故设置回掉函数也有四种方法,详见

Android点击Button按钮的四种事件监听方法总结

Android开发之回调函数的更多相关文章

  1. 微信小程序开发——使用回调函数出现异常:TypeError: Cannot read property 'setData' of undefined

    关键技术点: 作用域问题——回调函数中的作用域已经脱离了调用函数了,因此需要在回调函数外边把this赋给一个新的变量才可以了. 业务需求: 微信小程序开发,业务逻辑需要,需要把获取手机号码的业务逻辑作 ...

  2. 一起学习android使用一个回调函数onCreateDialog实现负载对话(23)

    效果图: 有时候我们须要去做一个Activity启动时的数据载入对话框,关于对话框的各种实现能够通过一起学android之对话框 Dialog的创建(7)来完毕,在这里另外介绍一个,利用onCreat ...

  3. C# (事件触发)回调函数,完美处理各类疑难杂症!

    每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客! 废话说多了...... 嘿嘿:本篇标题为:C#  (事件触发)回调函数,完美处理各类疑难杂症.个人理解如下:事件触发也就是触 ...

  4. Android开发 ---从互联网上下载文件,回调函数,图片压缩、倒转

     Android开发 ---从互联网上下载文件,回调函数,图片压缩.倒转 效果图: 描述: 当点击“下载网络图像”按钮时,系统会将图二中的照片在互联网上找到,并显示在图像框中 注意:这个例子并没有将图 ...

  5. android开发系列之回调函数

    想必对于回调函数大家肯定不陌生,因为这是我们开发里面常用的代码技巧.我也就不废话了,让我们直接来看代码吧! public class TestCallback { public interface I ...

  6. Android开发之自定义组件和接口回调

    说到自定义控件不得不提的就是接口回调,在Android开发中接口回调用的还是蛮多的.在这篇博客开始的时候呢,我想聊一下iOS的自定义控件.在iOS中自定义控件的思路是继承自UIView, 在UIVie ...

  7. Android开发学习之路-回调机制学习笔记

    不知道是我学Java的时候没有认真听还是怎么的,曾经一直不知道什么是“回调”,它有什么用,百度一大堆,都太复杂看不明白(好吧是我笨),所以想把自己理解的分享给其他看到的人,大家都真正认识一下这个重要的 ...

  8. android回调函数

    在我们进行android开发的时候,常常遇到一些回调函数,当中,我们最常常使用的回调就是,当我们对一个组件设置监听的时候,事实上就相对于设置的回调函数.比如: Button btn = (Button ...

  9. Android React Native组件的生命周期及回调函数

    熟悉android的童鞋应该都清楚,android是有生命周期的,其很多组件也是有生命周期.今天小编和大家分享的React Native组件的生命周期,还不了解的童鞋,赶紧来围观吧 在android开 ...

随机推荐

  1. 在Javascript中使用protobuf与c++进行通信

    环境:Win7_64旗舰版,VS2013 最近在研究Webkit,已经编译成功,接下来就是Javascript与c++如何传输数据,立刻就想到了protobuf,但是谷歌不支持Javascript,百 ...

  2. c++模板两个数的加法

    1.最简单的情况: template<class T> T Add(const T& a, const T& b) { return a + b; } 缺点是不能够处理不同 ...

  3. oracle数据库的一次异常起停处理。

    在重启数据库的时候,忘记把一个应用关停了,想起来的时候,就ctrl+c,把数据库shutdown immediate 给强制停下了,把该应用再停止,然后shutdown immdiate,这时候数据报 ...

  4. php array_walk_recursive函数的使用

    <?phpfunction myfunction($value,$key) {echo "The key $key has the value $value<br />&q ...

  5. a:link visited hover active

    CSS中a:link.a:visited.a:hover.a:active的用法:建议:尽可能的手写代码,可以有效的提高学习效率和深度.在网页设计中,设计美观的超链接效果可以增强网站的用户体验,可能会 ...

  6. HDU1969:Pie(二分)

    Pie Time Limit : 5000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submissio ...

  7. Win7与Ubuntu双系统时卸载Ubuntu的方法

    Win7与Ubuntu双系统时卸载Ubuntu的方法 [日期:2010-03-26] 来源:Ubuntu社区  作者:Ubuntu编辑 [字体:大 中 小]       1. 下载MBRFix工具,放 ...

  8. 转 Android HTTPS详解

    目录(?)[-] 前言 HTTPS原理 SSLTLS协议作用 基本的运行过程 握手阶段的详细过程 客户端发出请求ClientHello 服务器回应ServerHello 客户端回应 服务器的最后回应 ...

  9. form 表单 enctype 属性-(转自w3c)

    <from action="xxx.xxx" enctype="multipart/form-data"></from> 在上传文件时必 ...

  10. android app开发

    android 中文文档:   http://www.android-doc.com/training/index.html 二维码在线自动生成.http://www.liantu.com/