回调函数在Android监听机制中的体现

来源:未知 责任编辑:智问网络 发表时间:2013-10-30 11:07 点击:

今天想总结一下这一个月来学习android的一些体会,其中体会最大的就是回调函数在Android监听机制中的表现。可以说android系统中的监听无处不在~

一、回调函数

~  所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。例如Win32下的窗口过程函数就是一个典型的回调函数。一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的B姓甚名谁,所以S会约定B的接口规范(函数原型),然后由C提前通过S的一个函数R告诉S自己将要使用B函数,这个过程称为回调函数的注册,R 称为注册函数。Web Service以及Java的RMI都用到回调机制,可以访问远程服务器程序。

具体流程如下:

Java 中没有指针的概念,通过接口和内部类的方式实现回调的功能:

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

2. 在一个类Caller 中声明一个Callback接口对象mCallback

3. 在程序中赋予Caller对象的接口成员(mCallback) 一个内部类对象如

new  Callback(){

     callback(){

         //函数的具体实现

     }

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

二、实例

1、定义接口

 

public interface OnUpKeyLisnter{//定义一个借口,以便其他人根据我的定义编写程序实现接口

    public void OnUpkey();

  }

2、定义服务函数

 

public class InterfaceServer implements OnUpKeyLisnter{

 

  public OnUpKeyLisnter mOnUpKeyLisnter;

 

  @Override

  public void OnUpkey() {

    // TODO Auto-generated method stub

    if(mOnUpKeyLisnter != null){

      mOnUpKeyLisnter.OnUpkey();

    }

   

  }

 

  public void setOnUpKeyListener(OnUpKeyLisnter l){

    this.mOnUpKeyLisnter = l;

  }

}

 

3、定义客户函数

 

public class InterfaceClient {

 

 

  public static void main(String ...args){

    InterfaceServer mServer = new InterfaceServer();

    mServer.setOnUpKeyListener(new OnUpKeyLisnter() {

     

      @Override

      public void OnUpkey() {

        // TODO Auto-generated method stub

        System.out.println("哈哈哈~");

      }

    });

  }

}

 

 

 

回调函数在Android开发中频繁使用,一定要深入理解。

 

本文出自 “曾经沧海难为水~” 博客

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Android 完全退出程序
    • 原创:Android应用开发-Andorid歌词秀,含源码
    • android 屏幕保护
    • Android手机软件汉化教程---第四课 dex文件汉化
    • 众多Android 开源项目推荐,给力工作给力学习
    • Android Audio代码分析4
    • Android得到已安装的应用程序信息!
    • Android开发者指南(29) —— USB Host and Accessory
    • Android成长的幕后推手:工程师鲁宾
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1