今天想总结一下这一个月来学习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开发中频繁使用,一定要深入理解。

本文出自 “曾经沧海难为水~” 博客,请务必保留此出处http://cjchnws.blog.51cto.com/2158170/636633

更多相关文章

  1. Android添加一个回调监听接口
  2. Android下usb host接口插入usb设备时,如何屏蔽usb权限的提示框? 如
  3. Android开发一些实用的类、方法及接口(新手向)
  4. 通过数据库接口获取到的中文数据是问号怎么办?
  5. javaScript函数中执行C#代码中的函数
  6. JavaScript unshift()函数移入数据到数组第一位
  7. 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案
  8. Java 8 新特性-菜鸟教程 (3) -Java 8 函数式接口
  9. 如何将动态参数传递给jquery函数

随机推荐

  1. Android 之 资源自适应与国际化
  2. Android 图片加载缓存
  3. ProgressBar 样式
  4. Android 存储用户信息
  5. Android入门基础:从这里开始
  6. android 监听联系人数据库
  7. android CoordinatorLayout 使用
  8. Ubuntu 9.04安装Android编译环境
  9. android colors.xml 开发必备
  10. Android 旋转图片