回调机制
来源:互联网 发布:ios软件安装失败 编辑:程序博客网 时间:2024/06/08 00:20
为了方便理解就用最简单的同步回调:事件监听来理解
首先说一下同步的周期:
我们继承的listener就是一个回调的接口,首先我们创建自己的类A,然后让他继承回调的接口C(在这就是listener,这样类A就成了listener的子类了,我们就可以在类B中通过listener来定义得到类A)然后创建一个系统提供的类B(比如说button,其实他是View的子类),我们再在A中使用创建出来的类B调用B类(系统类)中已知的方法(setOnClickListener),参数是this(注意!this其实就是我们类A的一个函数指针,这样我们就可以在类B中明确的创建出类A),然后用A调用B中已知的一个方法(不难发现,这个方法在A中是没有入口的,其实这个方法是为类B提供用来回调的方法,比如说:onClick())
下面就是代码解析:
这里是接口C
public interface OnClickListener { /** * @param v The view that was clicked. */ void onClick(View v); }
这里是类A
<pre name="code" class="html">public class MainActivity extends Activity implements OnClickListener{ //这里就是创建的类B private Button button; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button)findViewById(R.id.button1); //这里我们调用B类中的方法,目的其实是为了让B得到A的函数指针 button.setOnClickListener(this); } //这里就是回调方法,B可以通过得到的A的对象来调用这个方法 @Override public void onClick(View v) { System.Out.println("OnClick"); } }
<pre name="code" class="html">这里是系统类B:
这个函数是为了得到A的函数指针this的:
<pre name="code" class="html">public void setOnClickListener(OnClickListener l) { if (!isClickable()) { setClickable(true); } mOnClickListener = l; }这个函数是用来回调A中的onClick方法的
<pre name="code" class="html">public boolean performClick() { sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED); if (mOnClickListener != null) { playSoundEffect(SoundEffectConstants.CLICK);
<span style="white-space:pre"></span> //回调方法 mOnClickListener.onClick(this); return true; } return false; }
0 0
- callback机制回调机制
- 回调机制
- java回调机制
- 回调机制
- java回调机制
- 回调机制
- java回调机制
- java回调机制
- java回调机制
- 回调机制
- 回调机制详解
- java 回调机制
- java回调机制
- 回调机制
- java回调机制
- android回调机制
- java回调机制
- 回调机制
- CodeForces—301A—Combination Lock
- hdu1198 Farm Irrigation DFS
- android property
- LeeCode 删除数组中某一特定值的元素,并返回新的数组长度
- hdu 2604 Queuing(矩阵快速幂)
- 回调机制
- 【Android开发】经典范例1-在GridView中显示SD卡上的全部图片
- 扩展三角形类求面积和打印
- uva-10820-Send a Table 欧拉函数,筛法求欧拉函数
- GWT(Google Web Toolkit)学习
- Canny
- [LeetCode][Jave] Best Time to Buy and Sell Stock II
- 小宽投资家交易室记录——20150519
- Singleton单例模式