Android学习笔记之java中的回调函数
在WINDOWS中,程序员想让系统DLL调用自己编写的一个方法,于是利用DLL当中回调函数(CALLBACK)的接口来编写程序,使它调用,这个就称为回调。在调用接口时,需要严格的按照定义的参数和方法调用,并且需要处理函数的异步,否则会导致程序的崩溃。这样的解释似乎还是比较难懂,这里举个简单的例子,程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法。目的达到。在C/C++中,要用回调函数,被调函数需要告诉调用者自己的指针地址,但在JAVA中没有指针,怎么办?我们可以通过接口(interface)来实现定义回调函数。
假设我是程序员A,以下是我的程序a:
public class Caller{
private MyCallInterface mc;
public Caller(){}
public setI(MyCallInterface mc){
this.mc=mc;
}
public call(){mc.fuc();}//Caller的调用方法
}
这里需要定义一个接口,以便程序员B根据我的定义编写程序实现接口。
public interface MyCallInterface{
public void fuc();
}
于是,程序员B只需要实现这个接口就能达到回调的目的了:
public class?callee implements MyCallInterface{
public void fuc(){
//do something
}
}
下面是调用过程:
public class callbacks{
public static void main(String args[]){
Callee c1=new Callee();
Caller caller=new Caller();
caller.setI(c1);
caller.call();
}
}
在以上代码中,caller是调用者,callee是被调用者,callbacks表示调用过程。
先产生了Callee对象,利用这个callee对象产生的Caller对象则携带了一些信息(即与Callee对象的关联),所以Caller对象可以利用自己的call方法调用Callee的方法。——这就是整个回调过程。
B产生A,则A具有调用B的方法的能力。caller中具有的接口引用很关键。实现了此接口引用的callee只需将自己的引用传给Caller。
一般来说分为以下几步:
- 声明回调函数的统一接口interface A,包含方法fuc();
- 在调用类caller内将该接口设置为私有成员private A XXX;
- 在caller内提供一个public方法,可以将外部“该接口A的实现类的引用”通过形参传给XXX;
- caller的某个方法call()中会用到XXX.fuc()方法;
- 在caller的实例中,将实现了A接口的对象的引用传给caller,后调用call()方法
转载于:https://www.cnblogs.com/lingyun1120/archive/2011/09/30/2196225.html
Android学习笔记之java中的回调函数相关推荐
- Java学习笔记1:Java中有关print、println、printf的用法和区别
Java学习笔记1:Java中有关print.println.printf的用法和区别 最近在学习java,写一些笔记记录下. 1.print()函数是一般的标准输出,但是不换行. 2.println ...
- Java中的回调函数学习-深入浅出
Java中的回调函数一般来说分为下面几步: 声明回调函数的统一接口interface A.包括方法callback(); 在调用类caller内将该接口设置为私有成员private A XXX; 在c ...
- 【theano-windows】学习笔记六——theano中的循环函数scan
前言 Scan是Theano中最基础的循环函数, 官方教程主要是通过大量的例子来说明用法. 不过在学习的时候我比较习惯先看看用途, 然后是参数说明, 最后再是研究实例. 国际惯例, 参考网址 官网关于 ...
- Android和Java中的回调函数
在 Android 的学习过程中遇到了回调函数,经过一段时间的理解,将自己的收获整理如下,希望对迫切希望了解这方面知识的同学有所启发. 回调函数的理解如下: 在A类中定义了一个方法,这个方法中用到了一 ...
- cocos2d-x学习笔记 动作 CCCallFunc家族(回调函数包装器)
CCCallFunc是CCActionInstant的子类,是非常重要的一个类族,就是适配器.用大白话说,就是做了一层包装,把函数包装成动作,这样你在执行动作的时候,就可以执行函数了.听起来很怪异吗? ...
- Android学习笔记之——手机中几种自带传感器的应用
本博文学习一下Android中几种传感器的应用 目录 Android传感器 使用传感器步骤 Demo Test 查看手机支持哪些传感器 界面布局
- Android学习笔记--GMS认证中常见的fail项及解决方法
############################################################# cts测试的一些命令: sudo chmod a+x copy_me ...
- 【学习笔记】Java中@Qualifier注解
当使用@Autowired注解按照组件类型进行注入时,若存在多个相同类型的组件时,spring就不知道该注入哪个了.此时就可以在多个相同类型的组件上使用@Component("组件名&quo ...
- android学习笔记——viewPager(适配器、常用函数、监听器、切换动画)
viewPager可以支持左右滑动 数据源->适配器->加载数据源 <android.support.v4.view.ViewPager> 一.配器有三种: 1.Pager ...
- java中函数的调用,java中如何调用函数
java动态调用函数,Java 中使用动态代码,java函数调用,java中如何调用函数 如何在 Java 中调用 C 函数 宗薇 [期刊名称]<网络新媒体技术> [年(卷),期]2000 ...
最新文章
- thrift的中文编码处理
- mysql的1067启动错误的解决
- file_get_contents(php://input)的使用方法
- AOP—JVM SandBox—底层原理解析
- SAP One Order redesign里的新CDS view
- jquery--选择器sizzle源码分析
- SpringBoot中如何灵活的实现接口数据的加解密功能?
- 开发者调试工具Chrome Workspace
- ArcGIS AddIn 图斑比例分割工具,调用捕捉功能
- 剑指offer之数据流中的中位数
- 在Outlook 2013中发送给多个收件人时如何隐藏电子邮件地址
- Linux ftpget和ftpput命令
- python检测刀具_科研一角|Python语言在人工智能加工中心机器人方面的应用
- Encoded Strings I 模拟(2021.11.沈阳)
- Android service后台执行定时任务
- WPF路径绘图制作心形
- 《软技能 代码之外的生存指南》
- 计算机办公软件应用教学总结,2018年office办公软件教学总结(精选)
- 纯JS+HTML简单表格增删改查
- 《Android源代码设计模式解析与实战》读书笔记(十四)