java、android 回调函数

  入行很久了,一直没有学会总结,每次遇到以前解决过的问题,但又想不出之前是怎么解决的时候总是要耗费好多的时间再去思考,再去查阅资料,最近突然感悟到了,想为自己整理总结常用的东西。

1.什么是回调函数     

  下面说说什么是回调函数,在C或者C++中回调函数的定义:程序在调用一个函数时,将自己的函数的地址作为参数传递给程序调用的函数时(那么这个自己的函数称回调函数)Java中没有指针,不能传递方法的地址,一般采用接口回调实现把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。

2.java回调函数的实现机制
  (1)定义一个回调函数的接口Callback

  (2)在调用的类中Caller中声明一个 Callback 对象并实现。(在android中我们进程实用内部类的方法对callback进行处理)

  (3)当特定条件或事件发生时,调用函数使用回调函数Callback的实现,对事件进行处理。

3.举例说明

package com.trace;

public class View {
	private OnTouchListener onTouchListener;
	public void setOnTouchListener(OnTouchListener onTouchListener){
		this.onTouchListener = onTouchListener;
	}
	
	public void OnViewTouch(){
		if(onTouchListener!=null){
			onTouchListener.onTouch("123");
		}
	}
	
	public interface OnTouchListener{
		boolean onTouch(String event);
	}
}

 这是模仿android view的touch事件

package com.trace;

public class ViewImpl implements View.OnTouchListener{
	
	@Override
	public boolean onTouch(String event) {
		// TODO Auto-generated method stub
		System.out.println(event);
		return false;
	}
	
	public static void main(String[] args){
		View view = new View();
		view.setOnTouchListener(new ViewImpl());
		view.OnViewTouch();
	}
}

这里可以理解为android 中的 button,textview 等视图组建,main函数可以理解为android中一个activity, view.OnViewTouch()可以理解为android touch事件的触发。我们可以看到运行的结果是输出123。这就验证了 当特定条件或事件发生时, 调用函数使用回调函数Callback的实现,对事件进行处理 这句话。 

4.结合android 小结一下回调事件

  android中大量使用了回调机制,如view 中的 onClick(), onLongClick(), onTouch(), onCreateContextMenu() 等。所以掌握好回调函数,有利于我们理解android的事件机制。

     总之回调函数就是通过实现类来完成实际要操作的动作。

 

 

 

 

posted on 2012-04-07 23:22  Trace_Li  阅读(1090)  评论(0编辑  收藏  举报

导航