android 接口回调全面,Android 回调机制--接口回调
刚开始学习接口回调的时候,乍一听接口回调这个名词感觉很高大上一样 于是就去网上找了一些接口回调的知识 网上总结的接口回调知识 感觉太臃肿 又是图 又是代码的搞不清楚 所以今天就把我对接口回调的理解分享给大家 希望刚学习这个知识点的朋友看了我的这篇文章 会很清楚理解接口回调这个知识点 也希望大家多提意见 对我的错误及时纠正 废话不多说 开始吧!
分析接口回调的话 我们就举一个小小的例子来解释一下 看下图:
小圆点初始状态
在这里我就简单的画一幅图 大家理解这个意思就行 这是我们自定义的一个控件(不了解自定义控件的朋友也没事 明白这个意思即可) 我们的需求是滑动小圆点然后让外面的类或者activity或者其他的控件知道我们的自定义控件发生了状态的改变 然后根据这个状态的改变做出相应的逻辑处理
小圆点滑到最右端通知外部
这个时候我们就要思考一个问题 小圆点滑到最右端 通过什么方式通知外部呢 这个时候我们就要用到接口了 我们先说明接口的步骤 然后再一步一步解释
第一步:我们要在自定义控件里定义一个接口(相当于买一个监听器)这个接口用来储存我们小绿点发生的状态改变
第二步:定义一个方法 (相当于设置监听器) 让外部的类来调用这个方法 这个方法里面放一个监听器(也就是第一步里设置的那个监听器) 重点来了 在这个方法里初始化我们的监听器 把他mListener = listener
第三步:在状态发生改变的地方调用我们的监听方法(我们自定义控件内部是知道自己的状态发生的改变)
第四步:在需要我们自定义控件状态发生改变的类里或者activity里找到这个控件然后设置监听
现在我们来分析这四部:
在第四步里我们传的那个监听器 传到我们的第二步里 然后把第四步传过来的监听器赋值 然后调用第三步的方法 重点来了 也就是接口回调的核心 我们可以看到在第三步里调用的mListener.onLock()方法 其实就是回调我们的第四步的onLock()方法 为什么了?因为我们第四步传过去的对象把他赋值给了mListener ,其实他们两个是同一个对象,所以mListener.onLock()就是回调我们第四步里的onLock()方法 这个是整个回调的核心.
讲到这里 还是多讲一点 接口回调的主要作用
假设我们的activity想要拿到我们自定义控件的状态然后finish()掉我们的activity(就相当于滑动解锁) 我们可以看到在我们自定义控件类里面 其实我们是可以拿到activity 然后finish掉自己 但是我们没有这样做 因为大家可以想象一下 这个自定义控件是在activity里面 如果我们的自定义控件是在dialog里面 或者其他的类里面 当我们想要关闭它时 那我们就需要修改自定义控件里的代码了 然后dismiss掉 这样拓展性一点也不好,而我们使用接口回调这一方法的作用就是 自定义控件自身发生了改变 然后把这个信息发布出去 谁想要得到这个信息就监听他的状态然后做出相应的逻辑处理 这就体现了接口回调的主要作用 那就是解耦合的作用
android 接口回调全面,Android 回调机制--接口回调相关推荐
- 回调java 简书_Java接口回调机制详解【转】
一.回调的含义和用途 1. 什么是回调? 一般来说,模块之间都存在一定的调用关系,从调用方式上看,可以分为三类:同步调用.异步调用和回调.同步调用是一种阻塞式调用,即在函数A的函数体里通过书写函数B的 ...
- 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路
原文地址: http://blog.csdn.net/luoshengyang/article/details/6627260 在前面一篇文章浅谈Service Manager成为Android进程间 ...
- 【Android 高性能音频】AAudio 音频流 PCM 采样 的 采样 缓冲 播放 的 连续机制 ( 数据回调机制 | 数据回调函数指针 | 实现数据回调函数 | 设置数据回调函数 )
文章目录 I . AAudio 音频流 采样 缓冲 播放 的连续机制 II . AAudio 音频流 数据回调函数 函数指针类型定义 III . AAudio 音频流 数据回调函数 实现 IV . A ...
- Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析(2)...
注意,这里的参数reply = 0,表示这是一个BC_TRANSACTION命令. 前面我们提到,传给驱动程序的handle值为0,即这里的tr->target.handle = ...
- android微信支付回调方法,Android接入支付宝和微信支付的方法
前言 很多APP都需要支付功能,国内一般就是支付宝和微信了.目前这2种接入方式对于APP端来说都已经比较方便了,因为大部分的安全校验之类的逻辑都在服务端. APP端总结起来就是三步走: 接入支付的库 ...
- Android 关于AIDL通信,RemoteCallbackList实现Server回调Client
Android 接口定义语言 (AIDL) Android 接口定义语言 (AIDL) 与您可能使用过的其他接口语言 (IDL) 类似.您可以利用它定义客户端与服务均认可的编程接口,以便二者使用进程间 ...
- android jni 回调 java_android linux线程通过JNI回调java函数 | 学步园
Linux线程通过JNI回调JAVA函数 最近做的一个小工程需要用到回调函数,由linux层回调到java层,调试的时候会遇到一些问题,免得忘记,在这里记录一下: JNI的各种数据类型和数据结构我就不 ...
- Android之使用AIDL时的跨进程回调—Server回调Client
首先建立在server端建立两个aidl文件 ITaskCallback.aidl 用于存放要回调client端的方法 package com.cmcc.demo.server; interface ...
- 谷歌翻译接口使用(android为例)
对于android来说,很多翻译接口要收费的.但是翻译还是有很多网页版的,因此爬虫便成为一种方式.谷歌翻译中国版不需要翻墙,谷歌翻译中有一个接口可以得到翻译后的json. 例子: https://tr ...
最新文章
- Sublime Text 3常用快捷键
- zip 文件下载函数封装
- linux之SQL语句简明教程---AND OR
- 个人收集 - 1、自动消失的消息提示(Js+Div实现)
- [转载] Java中的字符串处理
- android studio 2.3.1 r丢失,AndroidStudio中 R文件缺失的办法
- fastdfs搭建_记一次生产环境FastDFS文件系统安装部署过程
- 《Storm实时数据处理》一2.7 为日志流集群创建集成测试
- unity可以直接转h5吗_瞎折腾:用Unity撸纯HTML5移动游戏/应用
- 华为v9计算机在哪方面的应用,华为手机助手怎么用 HiSuite详细使用教程
- Linux中压缩文件后生成,在 Linux系统中,压缩文件后生成后缀为.gz文件的命令是 gzip 。...
- 欧姆龙服务器数码管不显示问题,TM1640驱动数码管不显示问题
- Unity3D C#数学系列之创建圆柱体
- 能处理姓氏异读的汉字转拼音工具:hanz2piny
- CAD2012安装失败怎么回事?
- 推动企业上云实施经验总结
- 沙漠求生十五选五实验
- 乘2取整法_十进制小数转换成二进制小数,可以采用“乘2取整”法
- 根据域名展示对应备案号内容的共用站点默认页面index.html
- QT + 大恒水星工业相机 +vs2017 实现线程拍摄视频