回调(毁掉?)机制
http://www.cnblogs.com/heshuchao/p/5376298.html这篇文章讲的很好。
这篇 属于 JAVA的范畴,只不过我们是借用安卓按钮的onclick事件来解释这种机制。
首先,我们要 创建一个接口,在这个接口中 声明我们想调用的方法。(接口中定义抽象方法即可,具体由具体类来实现接口中的方法)
暂停一下,举个栗子,我们都知道 给按钮添加监听器时重写的onclick方法,那么在这个onclick中编写的代码不同,那么当我们点击按钮的时候做出的反应就不同(特么的,听起来一副很傻比的样子??),这个就是 回调机制的 初衷了,现在我们开始引入回调机制的概念:
网上很多 什么程序A调用程序B中的方法C,然后方法C又反过来调用程序A中的方法D;是不是一头雾水,其实大概的机制也差不多就是这样,好不容易理清楚了,发现在实践中 貌似并不完全一样;没错 笔者初期也是一脸懵逼 ??。
那么什么是回调呢:在一个类中需要使用一些方法,不过这些方法具体是什么样的方法,现在还不得而知,这里聪明的同学肯定已经联想到了接口,接口就是定义了一系列的抽象方法,这些抽象方法由那些使用了接口的具体类来提供实现,我的猜想是 button.setOnClickListener(new View.onClickListener) 括号中的 onClickListener是View类中的一个接口,这个接口中有一个抽象方法onClick
所以我们 很多时候是这样
这其实是使用了 匿名内部类来实现了该接口中的onClick方法 并将实现了该方法匿名类的实例的引用作为参数传递给setOnClickListener。
那么,View类中单击监听属性 1 public OnClickListener mOnClickListener; 便也持有了该引用,当我们点击按钮时 程序调用View中的mOnClickListener.onClick ,这时View程序反过来调用 程序中我们编写的onClick方法,也就完成了一个所谓的回调过程,在这个过程中onClick这个方法便是回调方法。笔者的表达能力有限,暂时只能讲成这个样子,后期有更深刻的体会后 会回过头来更新这篇文章,初学者可以看开头笔者推荐那篇博客,那个写的循序渐进很好理解。
本文可能存在片面或者问题,有更好的建议或者意见笔者欢迎大家在评论区 留言。