刚开始学习接口回调的时候,乍一听接口回调这个名词感觉很高大上一样 于是就去网上找了一些接口回调的知识 网上总结的接口回调知识 感觉太臃肿 又是图 又是代码的搞不清楚 所以今天就把我对接口回调的理解分享给大家 希望刚学习这个知识点的朋友看了我的这篇文章 会很清楚理解接口回调这个知识点 也希望大家多提意见 对我的错误及时纠正 废话不多说 开始吧!

分析接口回调的话 我们就举一个小小的例子来解释一下 看下图:

小圆点初始状态

在这里我就简单的画一幅图 大家理解这个意思就行 这是我们自定义的一个控件(不了解自定义控件的朋友也没事 明白这个意思即可) 我们的需求是滑动小圆点然后让外面的类或者activity或者其他的控件知道我们的自定义控件发生了状态的改变 然后根据这个状态的改变做出相应的逻辑处理

小圆点滑到最右端通知外部

这个时候我们就要思考一个问题 小圆点滑到最右端 通过什么方式通知外部呢 这个时候我们就要用到接口了 我们先说明接口的步骤 然后再一步一步解释

第一步:我们要在自定义控件里定义一个接口(相当于买一个监听器)这个接口用来储存我们小绿点发生的状态改变

第二步:定义一个方法 (相当于设置监听器) 让外部的类来调用这个方法 这个方法里面放一个监听器(也就是第一步里设置的那个监听器) 重点来了  在这个方法里初始化我们的监听器 把他mListener = listener

第三步:在状态发生改变的地方调用我们的监听方法(我们自定义控件内部是知道自己的状态发生的改变)

第四步:在需要我们自定义控件状态发生改变的类里或者activity里找到这个控件然后设置监听

现在我们来分析这四部:

在第四步里我们传的那个监听器 传到我们的第二步里 然后把第四步传过来的监听器赋值 然后调用第三步的方法 重点来了 也就是接口回调的核心 我们可以看到在第三步里调用的mListener.onLock()方法 其实就是回调我们的第四步的onLock()方法 为什么了?因为我们第四步传过去的对象把他赋值给了mListener ,其实他们两个是同一个对象,所以mListener.onLock()就是回调我们第四步里的onLock()方法 这个是整个回调的核心.

讲到这里 还是多讲一点 接口回调的主要作用

假设我们的activity想要拿到我们自定义控件的状态然后finish()掉我们的activity(就相当于滑动解锁)  我们可以看到在我们自定义控件类里面 其实我们是可以拿到activity 然后finish掉自己 但是我们没有这样做 因为大家可以想象一下 这个自定义控件是在activity里面 如果我们的自定义控件是在dialog里面 或者其他的类里面 当我们想要关闭它时 那我们就需要修改自定义控件里的代码了 然后dismiss掉 这样拓展性一点也不好,而我们使用接口回调这一方法的作用就是 自定义控件自身发生了改变 然后把这个信息发布出去 谁想要得到这个信息就监听他的状态然后做出相应的逻辑处理 这就体现了接口回调的主要作用 那就是解耦合的作用

android 接口回调全面,Android 回调机制--接口回调相关推荐

  1. 回调java 简书_Java接口回调机制详解【转】

    一.回调的含义和用途 1. 什么是回调? 一般来说,模块之间都存在一定的调用关系,从调用方式上看,可以分为三类:同步调用.异步调用和回调.同步调用是一种阻塞式调用,即在函数A的函数体里通过书写函数B的 ...

  2. 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路

    原文地址: http://blog.csdn.net/luoshengyang/article/details/6627260 在前面一篇文章浅谈Service Manager成为Android进程间 ...

  3. 【Android 高性能音频】AAudio 音频流 PCM 采样 的 采样 缓冲 播放 的 连续机制 ( 数据回调机制 | 数据回调函数指针 | 实现数据回调函数 | 设置数据回调函数 )

    文章目录 I . AAudio 音频流 采样 缓冲 播放 的连续机制 II . AAudio 音频流 数据回调函数 函数指针类型定义 III . AAudio 音频流 数据回调函数 实现 IV . A ...

  4. Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析(2)...

    注意,这里的参数reply = 0,表示这是一个BC_TRANSACTION命令.         前面我们提到,传给驱动程序的handle值为0,即这里的tr->target.handle = ...

  5. android微信支付回调方法,Android接入支付宝和微信支付的方法

    前言 很多APP都需要支付功能,国内一般就是支付宝和微信了.目前这2种接入方式对于APP端来说都已经比较方便了,因为大部分的安全校验之类的逻辑都在服务端. APP端总结起来就是三步走: 接入支付的库 ...

  6. Android 关于AIDL通信,RemoteCallbackList实现Server回调Client

    Android 接口定义语言 (AIDL) Android 接口定义语言 (AIDL) 与您可能使用过的其他接口语言 (IDL) 类似.您可以利用它定义客户端与服务均认可的编程接口,以便二者使用进程间 ...

  7. android jni 回调 java_android linux线程通过JNI回调java函数 | 学步园

    Linux线程通过JNI回调JAVA函数 最近做的一个小工程需要用到回调函数,由linux层回调到java层,调试的时候会遇到一些问题,免得忘记,在这里记录一下: JNI的各种数据类型和数据结构我就不 ...

  8. Android之使用AIDL时的跨进程回调—Server回调Client

    首先建立在server端建立两个aidl文件 ITaskCallback.aidl 用于存放要回调client端的方法 package com.cmcc.demo.server; interface ...

  9. 谷歌翻译接口使用(android为例)

    对于android来说,很多翻译接口要收费的.但是翻译还是有很多网页版的,因此爬虫便成为一种方式.谷歌翻译中国版不需要翻墙,谷歌翻译中有一个接口可以得到翻译后的json. 例子: https://tr ...

最新文章

  1. Sublime Text 3常用快捷键
  2. zip 文件下载函数封装
  3. linux之SQL语句简明教程---AND OR
  4. 个人收集 - 1、自动消失的消息提示(Js+Div实现)
  5. [转载] Java中的字符串处理
  6. android studio 2.3.1 r丢失,AndroidStudio中 R文件缺失的办法
  7. fastdfs搭建_记一次生产环境FastDFS文件系统安装部署过程
  8. 《Storm实时数据处理》一2.7 为日志流集群创建集成测试
  9. unity可以直接转h5吗_瞎折腾:用Unity撸纯HTML5移动游戏/应用
  10. 华为v9计算机在哪方面的应用,华为手机助手怎么用 HiSuite详细使用教程
  11. Linux中压缩文件后生成,在 Linux系统中,压缩文件后生成后缀为.gz文件的命令是 gzip 。...
  12. 欧姆龙服务器数码管不显示问题,TM1640驱动数码管不显示问题
  13. Unity3D C#数学系列之创建圆柱体
  14. 能处理姓氏异读的汉字转拼音工具:hanz2piny
  15. CAD2012安装失败怎么回事?
  16. 推动企业上云实施经验总结
  17. 沙漠求生十五选五实验
  18. 乘2取整法_十进制小数转换成二进制小数,可以采用“乘2取整”法
  19. 根据域名展示对应备案号内容的共用站点默认页面index.html
  20. QT + 大恒水星工业相机 +vs2017 实现线程拍摄视频

热门文章

  1. 面试分享:专科半年经验面试阿里前端P6+总结
  2. 【3】少儿Python编程学习_从哪开始学习
  3. 判断是页面否为微信打开
  4. 关于VMBox重启无法打开虚拟机问题
  5. 沉舟侧畔千帆竞,百舸争流稳为先——正雅齿科
  6. 模型和算法,有什么区别
  7. github首次使用提交项目
  8. 图片识别——感知哈希算法
  9. 与开发团队合作的8个技巧
  10. 注册表写入二进制数据