一个故事理解什么是接口回调
来源:互联网 发布:网络音箱 编辑:程序博客网 时间:2024/05/22 01:57
接口回调
- handler机制+thread
- 怎么理解接口回调-->接口回调就是一个通知机制
- 作用:1.单纯的通知 2.通知+传值
- 步骤:
- 1.定义接口,以及接口方法
- 2.定义接口对象
- 3.在某一个地方.接口对象调用接口方法
- 4.暴露接口对象(构造方法,setter方法)
接口回调实例
//1. public static interface OnCheckedChangeListener { void onCheckedChanged(CompoundButton buttonView, boolean isChecked); } //2. private OnCheckedChangeListener mOnCheckedChangeListener; //3. mOnCheckedChangeListener.onCheckedChanged(this, mChecked); //4. public void setOnCheckedChangeListener(OnCheckedChangeListener listener) { mOnCheckedChangeListener = listener; }
对于接口回调,上边大致做了一个总结与概述,相信看着有些晦涩;个人感觉通过下面的例子来理解既有趣又非常形象。
例子:
我昨晚敲代码敲到了4点
第二天精力不行,想要睡觉
和同桌商量一下,班主任来了叫醒我
上边的故事就是回调,我的一些过程就是要让同桌监听老师的动作,所以老师的动作就要定义为接口,而合适调用老师的动作方法呢?就是同桌,因为同桌的动作决定我的动作。回调是不一定执行的代码,遇到某个条件才回去调用实现类里面的方法。
那么就通过代码,表述这个过程:
首先,对于“我”的一些方法:
public class Me {private TimermTimer;/**想睡觉方法*/public void wantSleep() {System.out.println("昨晚敲代码敲到4点钟,突然想睡觉...");}/**开始睡觉方法*/public void startSleep() {mTimer = new Timer();mTimer.schedule(new TimerTask() {@Overridepublic void run() {System.out.println("开始呼呼大睡.........");}}, 0, 1000);//每隔1秒睡一次}/**停止睡觉*/public void stopSleep() {if (mTimer != null) {mTimer.cancel();mTimer = null;System.out.println("停止了睡觉");}}}老师的动作定义为接口:
*/// 1.定义接口,以及接口方法public interface OnTeacherComeListener {void onTeachCome(String teacherName);void onTeachCome();}同桌显然要调用老师的方法,用于监听老师的动作。同桌类的方法如下:
public class ClassMate {// 2.定义接口对象OnTeacherComeListenermOnTeacherComeListener;/** * 方式1:通过构造方法赋值 */public ClassMate(OnTeacherComeListener onTeacherComeListener) {super();mOnTeacherComeListener = onTeacherComeListener;}public ClassMate() {super();}/**模拟老师来了,模拟老师来了同时,告知老师名字*/public void doTeacherCome(String teacherName) {// 3.在某一个地方.接口对象调用接口方法-->老师来了的时候。本质调用实现类的方法mOnTeacherComeListener.onTeachCome(teacherName);}// 4.暴露接口对象(构造方法,setter方法)/** * 方式2:通过setter赋值 */public void setOnTeacherComeListener(OnTeacherComeListener onTeacherComeListener) {mOnTeacherComeListener = onTeacherComeListener;}}最后就是测试方法:
public class Test {public static void main(String[] args) {final Me me = new Me();// 我想睡觉me.wantSleep();// 找到一个同桌ClassMate classMate = new ClassMate();System.out.println("我去和同桌协商......");// 和他商量好-->如果老师来了.你拍醒我.让我停止睡觉。同桌设置监听器classMate.setOnTeacherComeListener(new OnTeacherComeListener() {//接口实现类@Override/**老师来了,立即触发这里*/public void onTeachCome(String teacherName) {// 通知+传值的效果if ("伍老师".equals(teacherName)) {// 回调过程中.有传值的效果System.out.println("伍老师不是班主任,我继续睡觉");} else if ("李老师".equals(teacherName)) {me.stopSleep();//李老师是班主任,我停止睡觉}}@Overridepublic void onTeachCome() {// 没传值,只是通知的效果}});// 模拟商量了2s钟try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}// 我开始睡觉me.startSleep();// 10s后模拟伍老师来了.try {Thread.sleep(10000);} catch (InterruptedException e) {e.printStackTrace();}//同桌监听到了老师来到classMate.doTeacherCome("伍老师");// 模拟伍老师来了.try {Thread.sleep(10000);} catch (InterruptedException e) {e.printStackTrace();}classMate.doTeacherCome("李老师");}}
运行结果截图如下:
喜欢我的朋友可以关注我哦~
也可以扫描下方的二维码,或搜索公众号 Android程序员开发指南 去微信每日阅读一篇安卓开发文章。
长按上方二维码,关注本公众号一起交流Android开发技术。
1 0
- 一个故事理解什么是接口回调
- 一个故事理解什么是ERP
- 什么是接口回调?
- 什么是接口回调?
- Java中什么是接口回调?and Java回调函数的理解
- Java中什么是接口回调?and Java回调函数的理解
- 一个小故事来说明什么是ERP
- 一个故事告诉你什么是分级基金
- 一个故事告诉你什么是分级基金
- 一个故事告诉你什么是分级基金
- 一个故事告诉你什么是ERP
- 什么是接口回调,接口回调与向上转型的区别,回调函数的理解
- 一个例子让你彻底理解java接口回调
- 一个demo理解什么是MVP
- 一个demo理解什么是Dagger2
- Java中什么是接口回调?
- Java中什么是接口回调?
- Java中什么是接口回调
- 编程之美中烙饼排序的scala实现
- Linux学习笔记
- 佳佳
- plsql客户端连接oracle数据库的配置
- 从头开始学习yii2---1.搭建yii2开发环境
- 一个故事理解什么是接口回调
- 快递物流信息推送功能分析
- 正定矩阵(Positive-definite Matrix)
- WCF远程连接SQL Server 2008 R2
- Android开发-百度地图API_v4.1.1-AndroidStudio(四)基础地图
- Android 6.0 运行时权限处理
- JSF学习笔记-web.xml和faces-config.xml配置
- Oracle利用dbms_metadata.get_ddl查看DDL语句
- 真正剖析解决com/android/command/dexer/Main : Unsupported major.minor version 52.0