回调就是外部设置一个方法给一个对象, 这个对象可以执行外部设置的方法, 通常这个方法是定义在接口中的抽象方法, 外部设置的时候直接设置这个接口对象即可.


例如给安卓添加按钮点击事件, 我们创建了OnClickListener接口 实现了其中的onClick方法, 在合适的时机(按钮被点击的时候) , 就会执行我们实现的onClick()方法. 这个方法就被回调了 . 

1. 如何定义一个回调

a. 定义接口 : 在类中定义一个Interface, 并在接口中定义一个抽象方法;

b. 接口对象 : 在类中定义一个该接口的成员变量;

c. 设置对象 : 在类中定义一个公共的方法, 可以设置这个接口的对象, 调用该方法给接口对象成员变量赋值;

d. 调用方法 : 在合适的位置调用接口对象中的方法;

2. 代码实例

public class Employee {
/*
* 定义回调接口的成员变量
*/
private Callback mCallback;
/*
* 声明回调接口
*/
public interface Callback{
public abstract void work();
}
/*
* 设置回调接口对象成员变量
*/
public void setCallback(Callback callback) {
this.mCallback = callback;
}
/*
* 调用回调接口对象中的方法
*/
public void doWork() {
mCallback.work();
}
}
public class Boss {
private Employee employee;
/*
* 为Employee设置回调函数, 在这里定义具体的回调方法
*/
public void setCallback() {
employee.setCallback(new Employee.Callback() {
@Override
public void work() {
System.out.println("work");
}
});
}
}

Android中的回调Callback的更多相关文章

  1. 【Android 应用开发】Android中的回调Callback

    回调就是外部设置一个方法给一个对象, 这个对象可以执行外部设置的方法, 通常这个方法是定义在接口中的抽象方法, 外部设置的时候直接设置这个接口对象即可. 例如给安卓添加按钮点击事件, 我们创建了OnC ...

  2. 安卓程序代写 网上程序代写[原]Android中的回调Callback

    回调就是外部设置一个方法给一个对象, 这个对象可以执行外部设置的方法, 通常这个方法是定义在接口中的抽象方法, 外部设置的时候直接设置这个接口对象即可. 1. 如何定义一个回调 a. 定义接口 : 在 ...

  3. android中的回调

    1.引子 android中的回调最经典的就是点击事件设置监听(一般通过switch(v.getId()))这里写个最基本的 btn_rigister.setOnClickListener(new Vi ...

  4. Android零基础入门第35节:Android中基于回调的事件处理

    原文:Android零基础入门第35节:Android中基于回调的事件处理 通过前面两期掌握了Android中基于监听的事件处理的五种形式,那么本期一起来学习Android中基于回调的事件处理. 一. ...

  5. android中的回调简单认识

    首先说一下最抽象的形式--2个类,A类和B类.A类含有1个接口.1个接口变量.(可能含有)1个为接口变量赋值的方法以及1个会使用接口变量的"地方";B类实现A中的接口,(可能)含有 ...

  6. Android中关于回调概念的笔记

    一.回调函数 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调 ...

  7. java与安卓中的回调callback学习笔记

    1.回调的简单设计如下: package com.listercai.top; public class A { private CallBack callBack; private AnotherC ...

  8. 理解JS中的回调(Callback)函数

    今天写代码时写了一个函数,想实现Nodejs查询pgSQL的数据查出来并把结果作为返回值,结果发现拿不到这个值,查了下资料才恍然大悟,这是Nodejs的最大特性--非阻塞! 查询数据操作作为比较消耗资 ...

  9. android中的回调请求的个人理解

    Fragment类提供了管理"选项菜单"的回调函数onCreateOptionMenu(Menu,MenuInflater),调用它可以--创建"选项菜单". ...

随机推荐

  1. jQuery动态绑定事件(左右移动)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. h5图片上传简易版(FileReader+FormData+ajax)

    一.选择图片(input的file类型) <input type="file" id="inputImg"> 1. input的file类型会渲染为 ...

  3. angularjs中控制器之间的通信----$on、$emit和$broadcast解析

    $on.$emit和$broadcast使得event.data在controller之间的传递变的简单. $emit只能向parent controller传递event与data $broadca ...

  4. windows10下“sqlplus / as sysdba”执行提示无权限解决办法

    ORA_DBA:是ORACLE 的特有用户,是超级管理员权限,建成DBA 它具有管理数据库的最高权限. 注明:需要以管理员身份运行cmd,不然第4步会失败(点开始,输入cmd,右键以管理员身份运行) ...

  5. memcache类的扩展函数

    Memcache — Memcache类 /****连接****/1.Memcache::connect – 创建一个Memcache对象语法:bool Memcache::connect ( str ...

  6. 类型“Observable<Response>”上不存在属性“map”

    出错提示: angular2 Property 'map' does not exist on type 'Observable<Response>' 类型“Observable<R ...

  7. try catch finally 中 returne的执行顺序

    结论:1.不管有没有出现异常,finally块中代码都会执行:2.当try和catch中有return时,finally仍然会执行:3.finally是在return后面的表达式运算后执行的(此时并没 ...

  8. linux内核中的IS_ERR()、PTR_ERR()、ERR_PTR()

    IS_ERR宏定义在include/linux/err.h,如下所示: #define MAX_ERRNO 4095 //判断x是不是在(0xfffff000,0xffffffff)之间,注意这里用u ...

  9. Go文件处理

    go语言中对文件处理一般都在os包中 func Mkdir(name string, perm FileMode) error 创建名称为name的目录,权限设置是perm,例如0777 func M ...

  10. 20145202马超 2016-2017-2《Java程序设计》课程总结

    学号 2016-2017-2<Java程序设计>课程总结 (按顺序)每周作业链接汇总 预备作业1(http://www.cnblogs.com/tuolemi/p/6193756.html ...