您的位置:首页 > 移动开发 > Android开发

Android 回调实例详解

2015-09-29 11:17 555 查看
</pre>网上很流行的一个例子就是<p></p><p>我有一个问题,然后我打电话给你,你思考下之后,将答案告诉我,</p><p>针对这个例子我们来实现我们的回调函数</p><p>1.我们先实现我们的这个例子的回调</p><p></p><pre name="code" class="java">/**
 * 联系接口
 * @author xuqunxing
 *
 */
public interface ContactBack {

	/**回答问题*/
	public void answerQuestion(String answer);
}
2.实现我这个类里面的方法

首先在我里面要有一个打电话给你的方法,我取名为beCall("问问题的人",“问题的名字”,回调函数)

3.实现你类里面的思考一下,然后回答我的问题(首先要接收我的beCall方法里面的各个参数)

这里我让You类实现Runnable类,实现run方法,在run方法中

@Override
	public void run() {
		System.out.println("你   正在想答案。。。");
		//思考1秒
		SystemClock.sleep(1000);
		//回答答案,在me类中回调
		contactBack.answerQuestion("你回答:傻逼,就是R平方=X平方+Y平方");
	}
4.你的思考是一个耗时的方法,所以要在一个线程里面,在我类里面调用

//你思考的方法调用
		new Thread(you).start();
综上。就是我打电话给你,你思考后回到我的问题的回调实例,下面贴上所有的代码

/**
* 我 (提出问题)
* @author xuqunxing
*
*/
public class Me {

public void askQuestion(){
System.out.println("我 提出问题:"+"勾股定理方程式这么写");
You you=new You();
you.beCall("高中同学","勾股定理方程式这么写",new ContactBack() {

//你思考之后,告诉我答案
@Override
public void answerQuestion(String answer) {

System.out.println("收到了答案:"+answer);
}
});
//你思考的方法调用 new Thread(you).start();
}

}
</pre><pre name="code" class="java">/**
 * 你(回复问题)
 * @author xuqunxing
 *
 */
public class You implements Runnable{

<span style="white-space:pre">	</span>String name;
<span style="white-space:pre">	</span>String question;
<span style="white-space:pre">	</span>ContactBack contactBack;
<span style="white-space:pre">	</span>//调用这个方法就表示有人打电话问你问题
<span style="white-space:pre">	</span>public void beCall(String name, String question, ContactBack contactBack) {
<span style="white-space:pre">		</span>this.contactBack=contactBack;
<span style="white-space:pre">		</span>this.name=name;
<span style="white-space:pre">	</span>}

<span style="white-space:pre">	</span>@Override
<span style="white-space:pre">	</span>public void run() {
<span style="white-space:pre">		</span>System.out.println("你   正在想答案。。。");
<span style="white-space:pre">		</span>//思考1秒
<span style="white-space:pre">		</span>SystemClock.sleep(1000);
<span style="white-space:pre">		</span>//回答答案,在me类中回调
<span style="white-space:pre">		</span>contactBack.answerQuestion("你回答:傻逼,就是R平方=X平方+Y平方");
<span style="white-space:pre">	</span>}

}
/**
 * 联系接口
 * @author xuqunxing
 *
 */
public interface ContactBack {

<span style="white-space:pre">	</span>/**回答问题*/
<span style="white-space:pre">	</span>public void answerQuestion(String answer);
}
/**
 * 主函数  类
 * @author xuqunxing
 *
 */
public class MainActivity extends ActionBarActivity {

<span style="white-space:pre">	</span>@Override
<span style="white-space:pre">	</span>protected void onCreate(Bundle savedInstanceState) {
<span style="white-space:pre">		</span>super.onCreate(savedInstanceState);
<span style="white-space:pre">		</span>setContentView(R.layout.activity_main);
<span style="white-space:pre">		</span>
<span style="white-space:pre">		</span>Me me=new Me();
<span style="white-space:pre">		</span>me.askQuestion();
<span style="white-space:pre">	</span>}

}


源码:http://download.csdn.net/detail/iblue007/9146571

查看日志输出:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: