Android学习—CallBack机制
来源:互联网 发布:nba2k周琦数据 编辑:程序博客网 时间:2024/06/04 23:32
接上一篇函数指针的总结
===============================================
android callback的学习:
先贴一段callback维基百科的解释吧,回头再写几个例子看看
<span style="font-size: 14px;">In computer programming, </span><span style="font-size:18px;"><strong>a callback is a piece of executable code that is passed as an argument to other code, which is expected to call back (execute) the argument at some convenient time.</strong></span><span style="font-size: 14px;"> The invocation may be immediate as in a synchronous callback or it might happen at later time, as in an asynchronous callback. In all cases, the intention is to specify a function or subroutine as an entity that is, depending on the language, more or less similar to a variable.</span>百科里说明了回调函数的关键是:将一段代码作为参数传递,而这段代码将会在某个时刻被执行。这个某个时刻可以是手动调用方法,而android里大多数情况是系统会触发这个事件,比如说点击屏幕这样的操作。
这两天断断续续也看了很多网上对于callback的解释,大概有了对于callback的理解,觉得写得比较好的是下面这篇博客:
http://blog.csdn.net/very_caiing/article/details/41898439
自己也跟着callback的实例写了demo,上面文章中的最后一个实例确实比较实用,也很巧妙~
我们假设有两个角色,A和B,A申明了一个回调接口,并定义了一个规范(接口里的函数),但还不知道怎么实现,希望B告诉他怎么做。
以下是我个人的理解:,
1,A的角色就类似老师,老师给全班50个同学布置了家庭作业,这个接口就是他写的题目。
<span style="font-size:14px;">//回调接口public interface ICallBack{void lifeExec();}</span>ps:老师给的题目很简短,就说同学们要根据自己的发挥去写lifeExec()。
2,拿到题目学生就可以去写了么,还没有,老师给的题目太大了,他还需要做个限制,他说今天题目是特别针对学生对象的,大家不要离题了。于是他给了下面这个类对象StudentObject
<span style="font-size:14px;">public class StudentObject {private ICallBack callBack;public void setCallBack(ICallBack callBack){this.callBack = callBack;}public void doSth(){this.callBack.postExec();}}</span>这里面的setCallBack,是给学生提交自己的作业用的,学生通过setCallBack可以提交自己的作业,老师通过doSth()可以查看某个学生的作业内容。
3, 学生B开始做题目,做完提交后,在某个时间老师去查看了,学生B的作业内容才被调用并显示出来。
<span style="font-size:14px;">public static void main(String[] args) throws InterruptedException {// TODO Auto-generated method stubStudentObject obj = new StudentObject();obj.setCallBack(new ICallBack(){//something to be done this.public void postExec() {// TODO Auto-generated method stubSystem.out.println("学生B的答案");}});System.out.println("学生B把自己的作业已经提交了");//Thread.sleep(5000);System.out.println("过了一段时间,老师看到了学生B的答案...");obj.doSth();}</span>
最后的output是这样的:
<span style="font-size:14px;">学生B把自己的作业已经提交了过了一段时间,老师看到了学生B的答案...学生B的答案</span>
恩,,可能有些牵强,但是也是自己理解的一个过程。
下面是上述博客中的一个计算函数执行时间的例子,在这里copy一下,希望后面自己能将callback应用到更多的实际场景中。
普通的计算函数执行时间:
public class TestObject { /** * 一个用来被测试的方法,进行了一个比较耗时的循环 */ public static void testMethod(){ for ( int i= 0 ; i< 100000000 ; i++){ } } /** * 一个简单的测试方法执行时间的方法 */ public void testTime(){ long begin = System.currentTimeMillis(); //测试起始时间 testMethod(); //测试方法 long end = System.currentTimeMillis(); //测试结束时间 System.out.println("[use time]:" + (end - begin)); //打印使用时间 } public static void main(String[] args) { TestObject test=new TestObject(); test.testTime(); } }
用了callback以后:
public class Tools { /** * 测试函数使用时间,通过定义CallBack接口的execute方法 * @param callBack */ public void testTime(CallBack callBack) { long begin = System.currentTimeMillis(); //测试起始时间 callBack.execute(); ///进行回调操作 long end = System.currentTimeMillis(); //测试结束时间 System.out.println("[use time]:" + (end - begin)); //打印使用时间 } public static void main(String[] args) { Tools tool = new Tools(); tool.testTime(new CallBack(){ //定义execute方法 public void execute(){ //这里可以加放一个或多个要测试运行时间的方法 TestObject.testMethod(); } }); } }当然还有一个 CallBack接口,里面有一个函数execute();
好了Android的callback就先学习到这里。
1 1
- Android学习—CallBack机制
- Android 回调机制学习之 Callback
- android下的callback机制
- android下的callback机制
- android下的callback机制
- android下的callback机制
- android中的Handler和Callback机制
- android中的Handler和Callback机制
- Android的handler和callback机制
- Callback机制在Android中的应用场景
- android中的Handler和Callback机制
- 浅谈Android中的回调机制CallBack
- android中的Handler和Callback机制
- Android之---回调机制(CallBack)
- CALLBACK机制:
- CallBack机制
- callback机制
- CallBack机制
- [ruby] 命令行
- Star
- 正确释放Vector的内存
- 一个包含着构造函数虚析构函数类大小为多少?
- 将ip地址压缩到一个无符号整形中
- Android学习—CallBack机制
- CSS初体验
- 纪念一下,开通csdn博客 Bootstrap
- 修改后台产品列表 每页个数
- Linux之ubuntu学习笔记(二):一些常用快捷键和相关命令来控制系统任务ctr+z,ctr+c,ctrl+d
- B-tree 算法详解
- linux系统调用
- xml解析器比较
- 23种设计模式-5-原型模式