接口回调
原文章:https://www.aliyun.com/jiaocheng/14860.html
- 简单粗暴理解接口回调
- 发表文章
- 摘要: 刚开始学习接口回调的时候,乍一听接口回调这个名词感觉很高大上一样于是就去网上找了一些接口回调的知识网上总结的接口回调知识感觉太臃肿又是图又是代码的搞不清楚所以今天就把我对接口回调的理解分享给大家希望刚学习这个知识点的朋友看了我的这篇文章会很清楚理解接口回调这个知识点也希望大家多提意见对我的错误及时纠正废话不多说开始吧! 分析接口回调的话我们就举一个小小的例子来解释一下看下图:小圆点初始状态在这里
-
刚开始学习接口回调的时候,乍一听接口回调这个名词感觉很高大上一样 于是就去网上找了一些接口回调的知识 网上总结的接口回调知识 感觉太臃肿 又是图 又是代码的搞不清楚 所以今天就把我对接口回调的理解分享给大家 希望刚学习这个知识点的朋友看了我的这篇文章 会很清楚理解接口回调这个知识点 也希望大家多提意见 对我的错误及时纠正 废话不多说 开始吧!
分析接口回调的话 我们就举一个小小的例子来解释一下 看下图:
小圆点初始状态在这里我就简单的画一幅图 大家理解这个意思就行 这是我们自定义的一个控件(不了解自定义控件的朋友也没事 明白这个意思即可) 我们的需求是滑动小圆点然后让外面的类或者activity或者其他的控件知道我们的自定义控件发生了状态的改变 然后根据这个状态的改变做出相应的逻辑处理
小圆点滑到最右端通知外部这个时候我们就要思考一个问题 小圆点滑到最右端 通过什么方式通知外部呢 这个时候我们就要用到接口了 我们先说明接口的步骤 然后再一步一步解释
第一步:我们要在自定义控件里定义一个接口(相当于买一个监听器)这个接口用来储存我们小绿点发生的状态改变
第二步:定义一个方法 (相当于设置监听器) 让外部的类来调用这个方法 这个方法里面放一个监听器(也就是第一步里设置的那个监听器) 重点来了 在这个方法里初始化我们的监听器 把他mListener = listener
第三步:在状态发生改变的地方调用我们的监听方法(我们自定义控件内部是知道自己的状态发生的改变)
第四步:在需要我们自定义控件状态发生改变的类里或者activity里找到这个控件然后设置监听
现在我们来分析这四部:
在第四步里我们传的那个监听器 传到我们的第二步里 然后把第四步传过来的监听器赋值 然后调用第三步的方法 重点来了 也就是接口回调的核心 我们可以看到在第三步里调用的mListener.onLock()方法 其实就是回调我们的第四步的onLock()方法 为什么了?因为我们第四步传过去的对象把他赋值给了mListener ,其实他们两个是同一个对象,所以mListener.onLock()就是回调我们第四步里的onLock()方法 这个是整个回调的核心.
讲到这里 还是多讲一点 接口回调的主要作用
假设我们的activity想要拿到我们自定义控件的状态然后finish()掉我们的activity(就相当于滑动解锁) 我们可以看到在我们自定义控件类里面 其实我们是可以拿到activity 然后finish掉自己 但是我们没有这样做 因为大家可以想象一下 这个自定义控件是在activity里面 如果我们的自定义控件是在dialog里面 或者其他的类里面 当我们想要关闭它时 那我们就需要修改自定义控件里的代码了 然后dismiss掉 这样拓展性一点也不好,而我们使用接口回调这一方法的作用就是 自定义控件自身发生了改变 然后把这个信息发布出去 谁想要得到这个信息就监听他的状态然后做出相应的逻辑处理 这就体现了接口回调的主要作用 那就是解耦合的作用