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
查看日志输出:
相关文章推荐
- (转)android 消息推送.视频
- Android应用程序如何调用支付宝接口
- Android 使用高德SDK实现导航笔记
- Android学习之HelloWorld
- Android Design Support Library使用详解
- android自定义日期选择
- Android自定义解析Html的TextView-HtmlView
- android学习各种bug(5)
- Android 即时音视频解决方案1——环信
- Android动态改变布局
- android在项目中使用百度地图
- Android底部菜单的实现
- Android 基础
- Android模仿QQ音乐播放旋转的圆形ImageView
- android九宫格解锁
- Android Material Design Library系列教程(四)
- android 手机与单片机之间的蓝牙通信
- (转)那两年炼就的Android内功修养
- android录音监听
- Android M 新的运行时权限开发者需要知道的一切