具体步骤:

一、建模

回调函数的关键是:将一段代码作为参数传递,而这段代码将会在某个时刻被执行

我理解的接口回调就是,我这个类实现了一个接口里的方法doSomething,然后注册到你这里,然后我就去做别的事情去了,

你在某个触发的时机回头来调用我doSomething的方法。好比,我给你打电话问某个难题,你电话里想不出来,于是说等想到了再回我电话。

第一步:

注册约定接口:

第二步:

我得先打电话(注册)到你那里,告诉你我的问题是什么!

所以你那里必须有个方法让我告诉你问题相关事宜(注册).

第三步:

当你想到问题的答案后,打电话告诉我答案,即回调我传进来的方法.

->整个机制构成三要素就是:我(客户端),你(服务端),约定(接口)

###我类###

###你类###

###接口类###

二、总结

Java 中没有函数指针这一说,因为java没有指针,但是并不代表着它不会使用这个功能。事实上,引用就是实现了指针的功能。回调方法就是一个通过方法指针来调用的方法。

如果我将这个方法的指针(地址,引用)通过形参传递到另一个类的某个方法里,那么当这个类调用该方法里面我所传入的指针时,就能调用我这边的方法。

整个过程就是我传入方法A的地址,你接收,并在某个时刻回调我这边的A方法。

由于java没办法操作指针,于是它用接口来实现。

JAVA方法回调是一种耦合设计思想。作为一种架构,必须有自己的运行环境,并且提供用户的实现接口。

主要步骤如下:

定义接口 Callback ,包含回调方法 callback();

服务端提供注册的方法,并设定在某个条件下会回调接口方法;

客户端提供接口的实现方法,并注册到服务端,把方法地址传进去。

这样,在需要的时候,可用Caller对象的mCallback接口成员调用callback()方法,完成回调了。

三、Android中的回调机制

在android 中回调机制被大量使用。

比如,在Activity中定义了很多生命周期的不同状态要调用的方法,这些方法都是空实现,系统框架要调用,用户也要调用来实现。或者更直接的是按键点击的实现方法。

明显,OnClickListener就是android 系统所约定好的接口,然后我们写的应用程序就是客户端,android 系统就是服务端。模型关系如下图所示:

以上可以看出,接口(系统框架)是系统提供的,接口的实现是用户实现的,这样可以达到接口统一,实现不同的效果。

系统在不同的状态“回调”我们的实现类,来达到接口和实现的分类。

 

最新文章

  1. lua中的中文乱码
  2. Linux定时任务Crontab详解
  3. zw版·Halcon与delphi(兼谈opencv)
  4. [iOS-UI]给输入框添加清除按钮的代码
  5. 利用mtd工具实现嵌入式设备在线升级
  6. PLSQL_性能优化系列16_Oracle Tuning Analyze优化分析
  7. OCI_ERROE - errcode[1591],errmsg[ORA-01591:
  8. 【弱省胡策】Round #6 String 解题报告
  9. linux IPC总结——管道
  10. Android studio 配置JNI环境
  11. asp.net iis URLRewrite 实现方法详解
  12. Oracle数据库悲观锁与乐观锁详解
  13. 深入Spring Boot:那些注入不了的Spring占位符(${}表达式)
  14. 彻底卸载Windows Service
  15. 举例子来说明Python引用和对象
  16. node中的事件发射器
  17. linux根目录介绍
  18. 每天学点SpringCloud(十一):Hystrix仪表盘
  19. [C++]PAT乙级1003. 我要通过!(17/20)
  20. StringBuffer 去掉最后一个字符

热门文章

  1. 实操教程丨使用Pod安全策略强化K8S安全
  2. 从火箭发场景来学习Java多线程并发闭锁对象
  3. 测试必知必会系列- Linux常用命令 - cp
  4. *fetch(_, { call, put }) { --- generator
  5. 数据挖掘算法——K-means算法
  6. pytorch里一些函数的说明记录
  7. sql优化,如何将in换为exists
  8. 网络安全从入门到精通 (第二章-4) 后端基础PHP—简介及基本函数-上
  9. c# Dictionary<string, object> 转JSON字符串
  10. 【原创】基于RBI的性能测试理念,通过jmeter快速定位接口最大并发用户数