当前位置: 首页 > news >正文

Android中的回调Callback

回调就是外部设置一个方法给一个对象, 这个对象可以执行外部设置的方法, 通常这个方法是定义在接口中的抽象方法, 外部设置的时候直接设置这个接口对象即可.


例如给安卓添加按钮点击事件, 我们创建了OnClickListener接口 实现了其中的onClick方法, 在合适的时机(按钮被点击的时候) , 就会执行我们实现的onClick()方法. 这个方法就被回调了 . 


1. 如何定义一个回调


a. 定义接口 : 在类中定义一个Interface, 并在接口中定义一个抽象方法;

b. 接口对象 : 在类中定义一个该接口的成员变量;

c. 设置对象 : 在类中定义一个公共的方法, 可以设置这个接口的对象, 调用该方法给接口对象成员变量赋值;

d. 调用方法 : 在合适的位置调用接口对象中的方法;


2. 代码实例

public class Employee {
	/*
	 * 定义回调接口的成员变量
	 */
	private Callback mCallback;
	/*
	 * 声明回调接口
	 */
	public interface Callback{
		public abstract void work();
	}
	/*
	 * 设置回调接口对象成员变量
	 */
	public void setCallback(Callback callback) {
		this.mCallback = callback;
	}
	/*
	 * 调用回调接口对象中的方法
	 */
	public void doWork() {
		mCallback.work();
	}
}

public class Boss {
	private Employee employee;
	/*
	 * 为Employee设置回调函数, 在这里定义具体的回调方法
	 */
	public void setCallback() {
		employee.setCallback(new Employee.Callback() {
			@Override
			public void work() {
				System.out.println("work");
			}
		});
	}
}





转载于:https://www.cnblogs.com/hanshuliang/p/4215461.html

相关文章:

  • 组成_05_CPU
  • 组播地址列表
  • linux 关闭SSH 连接用户
  • 编程面试的10大算法概念汇总
  • solarwinds engineer's toolset   V9.1 安装 及注册机
  • 理解并取证:IPv6与IPv4在报文结构上的区别
  • hibernate 如何实现延迟加载
  • VMware中Ubuntu网络正常但ping不出去
  • web本地存储-LocalStorage
  • Firebug Command Line 详细分析
  • 使用shell编程,创建10000个目录,结构类似于9/9/99
  • 制作mac U盘启动
  • 压缩版MySQL在Windows下的安装
  • Windows 2008r2重新接活180天使用
  • 翻译【ElasticSearch Server】第一章:开始使用ElasticSearch集群(1)
  • 自己简单写的 事件订阅机制
  • 03Go 类型总结
  • 10个确保微服务与容器安全的最佳实践
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • HTML-表单
  • Javascript Math对象和Date对象常用方法详解
  • JavaScript服务器推送技术之 WebSocket
  • LeetCode29.两数相除 JavaScript
  • leetcode98. Validate Binary Search Tree
  • Linux Process Manage
  • Mysql优化
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • SpingCloudBus整合RabbitMQ
  • XML已死 ?
  • 代理模式
  • 漂亮刷新控件-iOS
  • 少走弯路,给Java 1~5 年程序员的建议
  • 消息队列系列二(IOT中消息队列的应用)
  • 新书推荐|Windows黑客编程技术详解
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • !!java web学习笔记(一到五)
  • #if #elif #endif
  • (1)bark-ml
  • (c语言)strcpy函数用法
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (离散数学)逻辑连接词
  • (一)appium-desktop定位元素原理
  • (转)h264中avc和flv数据的解析
  • (转)iOS字体
  • (转)创业的注意事项
  • (转载)深入super,看Python如何解决钻石继承难题
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • ****Linux下Mysql的安装和配置
  • . NET自动找可写目录
  • .chm格式文件如何阅读
  • .NET Framework .NET Core与 .NET 的区别