android中惯用的回调

android中常用的回调

   做android的兄弟们都知道注册监听模式,应该说做c/s结构的应用都会遇到。比如我们需要监听来电状态,在来电状态改变时做出相应的变化,这多么像是一个回调啊。当然我们大多数就是用回调,也有用广播。

 

 

    一直在使用,仔细想想,其实就是简单的技巧。我模拟了一下用户点击button的需求,这种需求对大多数回调都有效,网上回调的例子太多,有些很好,我觉得接下来这个例子可能会更实际,没有那么多无用的东西。

 

 

    场景,在activity里生成一个button。并且点击这个button.点击button时作出操作。

 

   为了更逼真的模拟,我们先声明一个抽象类Activity。

 

    /**

 * 模拟android的Context类
 * */
public abstract class Activity {

	public abstract void OnCreate();
	
}
 

 

 

   再来模拟activity,我用了两种不同的写法来注册接口,大家各有所爱。

 

   /**

 * 第一种实现,估计是大家常用的一种实现
 * */
public class ActivityClass extends Activity implements OnClickListener{

	@Override
	public void onClick(String name) {
		
		System.out.println("第一种实现:"+name);
		
	}

	@Override
	public void OnCreate() {
		
		Button b = new Button();
		b.setName("button");
		b.setOnClickListener(this);
		b.click();
		
	}
	
}
 

   第二种就是最开始学java时常些的方式:

 

    /**

 * 第二种方式实现,匿名内部类
 * */
public class ActivitySecondClass extends Activity{

	@Override
	public void OnCreate() {
		
		Button b = new Button();
		b.setName("button");
		b.setOnClickListener(new OnClickListener() {
			
			public void onClick(String name) {
				
				System.out.println("第二种实现:"+name);
				
			}
		});
		b.click();
		
	}
	
	
}

 

   再来模拟我们的button.我为了演示,给button加了个name属性。

 

   /**

 * 模拟的button类
 * */
public class Button {
	
	private OnClickListener onclicklistener;
	
	private String name;
	public interface OnClickListener{
		
		public void onClick(String name);
		
	}
	
	public void setOnClickListener(OnClickListener onclicklistener){
		
		this.onclicklistener = onclicklistener;
		
	}
	
	public void click(){
		
		onclicklistener.onClick(name);//此处回调接口的实现
		
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
}

 

    接下来我们写个测试类来测试吧:

 

    public class Test {

	public static void main(String[] args) {
		
		//ActivityClass activity = new ActivityClass();//第一种写法
		ActivitySecondClass activity = new ActivitySecondClass();//第二种写法
		activity.OnCreate();
		
	}
	
}

 

    代码比较简单,我就不做解释了,我不会把本来很简单的东西给大家搞得很复杂,那样不是分享的目的,希望大家能有所收获,不足之处,还望指正。谢谢。

 

1 楼 vanner007 2012-04-07  
经典的UI中的用法
--策略模式