码迷,mamicode.com
首页 > 移动开发 > 详细

Android的回调

时间:2015-08-16 22:55:33      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:

  学了两三周的安卓了,最先开始是看mars老师的视频,看了一两天结合慕课网上的一些安卓视频,到现在算是有点入门了。

安卓立用得比较多的回调函数有点不明是怎么实现的,网上找了一些资料,结合自己的实践,总算有点明白了。

  现在就把我自己对Java回调的理解写下来,以方便以后查阅。

比如我们执行一个方法的时候,Android系统就会帮我们调用oncreate()等方法,Android中有大量这样的情形。我们可以这样想,我们执行方法A的时候,系统

怎么就能够帮我们方法B了呢?这种肯定什么我们还没明白的地方。实际上很简单,只要我们在方法A里写上调用方法B,不就可以实现调用A的时候就自动调用B方

法了吗?下面我们就模拟这样一个场景,Jhno去打游戏的时候小明的妹妹Linda就会通知Dad说Jhon打游戏了。

 先看目录结构:

技术分享

先定义一个通知接口,interface ITongzhi,

package wyl.MoniAndroidCallback;
/**
 * 谁要通知,谁就实现这个接口
 * @author wyl
 *
 */
public interface ITongzhi {
	public void Tongzhi();
}

  Linda.java

package wyl.MoniAndroidCallback;

/**
 * linda要对弟弟进行举报,所以linda实现通知接口
 * 
 * @author wyl
 */
public class Linda implements ITongzhi {

	@Override
	public void Tongzhi() {
		System.out.println("Linda说:弟弟去打游戏了");

	}

}

  PlayGame.java,

 

package wyl.MoniAndroidCallback;

public class PlayGame {
	String name;
	ITongzhi tongzhizhe;

	/**
	 * 打游戏的具体对象
	 * 
	 * @param name
	 */
	public PlayGame(String name) {
		this.name = name;
	}

	/**
	 * 如果实例化的时候不传入具体是谁在打游戏, 那么打游戏的具体对象就默认为Jhon
	 */
	public PlayGame() {
		this.name = "Jhon";
	}

	/**
	 * 开始打游戏了,因为打游戏的时候就要通知, 所以在打游戏这个方法里我们就调用实习了
	 * ITongzhi这个接口的类的默认方法(这个默认方法即接口中定义的方法)
	 */
	public void Dayouxi() {
		System.out.println(this.name + "正在打游戏");
		tongzhizhe = new Linda();
		tongzhizhe.Tongzhi();
	}
}

  Test.java ,测试类

package wyl.MoniAndroidCallback;

/**
 * 测试类
 * 
 * @author wyl
 * 
 */
public class Test {
	public static void main(String[] args) {
		/**
		 * 两个不同的构造器构造出来的方法,可以作为对比
		 */
		PlayGame p = new PlayGame("Tom");
		PlayGame p2 = new PlayGame();
		p.Dayouxi();
		System.out.println("=========================");
		p2.Dayouxi();
	}
}

  打印结果:

Tom正在打游戏
Linda说:弟弟去打游戏了
=========================
Jhon正在打游戏
Linda说:弟弟去打游戏了

  实际上,Linda.java这个类,还可以进行改进,实现进一步的解耦。只要明白了这个例子,肯定就知道怎么进行解耦了。

Android的回调

标签:

原文地址:http://www.cnblogs.com/Sunnor/p/4735000.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!