Android 回调

前言:
Android中的回调最经典的就是点击事件设置监听(一般通过switch(v.getId()))这里写个最基本的
btn_rigister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// TODO log in
}
});
view对外暴露了一个接口onClick
public interface OnClickListener {
/**
* Called when a view has been clicked.
*
* @param v The view that was clicked.
*/
void onClick(View v);
}
我们在用的时候实现具体方法写了处理时,当前的Actvity是没有对这个方法做任何操作,这个被充实之后的onClick方法被view回调处理!其中一段处理 比如
public boolean callOnClick() {
ListenerInfo li = mListenerInfo;
if (li != null && li.mOnClickListener != null) {
li.mOnClickListener.onClick(this);
return true;
}
return false;
}
具体可以阅读View.java
2、什么是回调
回调其实是一种双向调用模式,也就说调用方在接口被调用时也会调用对方的接口,听起来就很拗口,翻译翻译就是“实现了抽象类/接口 的实例实现了父类的提供的抽象方法,后,将该方法交还给父类来处理”,口诀念3遍,可以体会到其中的内涵了没?
主要要弄清楚一点,实现方法交还给提供接口的父类处理!
3、为什么要用回调
这里体现了Java面向对象的“万事万物皆为对象”,我们需要将普通物体的特性抽象出来,共性之中又有特性,每个不同的特性就需要交给特定的情况处理,通过暴露接口方法可以减少很多重复,代码更加优雅。
比如view具有被点击的通性,但是每个点击又会产生不一样的事件处理一样,因此android对外暴露一个接口有个onClick方法,你需要处理啥你就写啥,view只会调用这个方法,具体怎么处理你已经自己为不同的点击事件做了处理了。
4、如何写
一个很好的小栗子
【定义接口】 在类中定义一个Interface, 并在接口中定义一个抽象方法
public interface Callback{
public abstract void work();
}
【接口对象】在类中定义一个该接口的成员变量
private Callback mCallback;
【设置对象】在类中定义一个公共方法,可以设置这个接口的对象,调用该方法给接口对象变量赋值
public void setCallback(Callback callback) {
this.mCallback = callback;
}
【调用方法】调用接口对象中的方法
public void doWork() {
mCallback.work();
}
ok,
完整代码如下
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");
}
});
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Android
# 回调
# 回调详解
# 回调实例
# Android中Fragment多层嵌套时onActivityResult无法正确回调问题的解决方法
# Android 的回调事件详解
# Android异步回调中的UI同步性问题分析
# Android的Fragment的生命周期各状态和回调函数使用
# 深入浅析Android接口回调机制
# 理解Android中Activity的方法回调
# android自定义控件和自定义回调函数步骤示例
# 详细介绍Android中回调函数机制
# Android中回调接口的使用介绍
# 基于Android中Webview使用自定义的javascript进行回调的问题详解
# 类中
# 象中
# 实现了
# 在这里
# 很好
# 是一种
# 也会
# 有个
# 就好
# 又有
# 并在
# 只会
# 希望能
# 要用
# 写了
# 就说
# 你已经
# 又会
# 体会到
相关文章:
javascript中的try catch异常捕获机制用法分析
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
如何配置支付宝与微信支付功能?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
建站之星微信建站一键生成小程序+多端营销系统
宝塔建站后网页无法访问如何解决?
大同网页,大同瑞慈医院官网?
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
南宁网站建设制作定制,南宁网站建设可以定制吗?
如何高效配置IIS服务器搭建网站?
如何规划企业建站流程的关键步骤?
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
清除minerd进程的简单方法
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
实例解析angularjs的filter过滤器
,怎么在广州志愿者网站注册?
如何选择高性价比服务器搭建个人网站?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
岳西云建站教程与模板下载_一站式快速建站系统操作指南
完全自定义免费建站平台:主题模板在线生成一站式服务
广东专业制作网站有哪些,广东省能源集团有限公司官网?
如何制作算命网站,怎么注册算命网站?
建站主机数据库如何配置才能提升网站性能?
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
如何在橙子建站上传落地页?操作指南详解
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
建站之星代理平台如何选择最佳方案?
建站org新手必看:2024最新搭建流程与模板选择技巧
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
如何快速打造个性化非模板自助建站?
建站之星安装模板失败:服务器环境不兼容?
宝塔面板如何快速创建新站点?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
如何在IIS中新建站点并配置端口与IP地址?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
制作网站的公司有哪些,做一个公司网站要多少钱?
如何选择最佳自助建站系统?快速指南解析优劣
如何在腾讯云服务器快速搭建个人网站?
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
建站为何优先选择香港服务器?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
C#如何在一个XML文件中查找并替换文本内容
,南京靠谱的征婚网站?
电商网站制作价格怎么算,网上拍卖流程以及规则?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
家具网站制作软件,家具厂怎么跑业务?
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
*请认真填写需求信息,我们会在24小时内与您取得联系。