对Android 回调机制的一些理解
2016-08-30 23:23
260 查看
最近在弄关于Android 回调的问题,对其做一下自己的理解。一:什么是Android的回调?在A类中定义了一个方法,这个方法中用到了一个接口和该接口中的抽象方法,但是抽象方法没有具体的实现,需要B类去实现,B类实现该方法后,它本身不会去调用该方法,而是传递给A类,供A类去调用,这种机制就称为回调。二:关键代码(1) 我在MyButton类中声明如下:
//1:声明接口 public interface OnClickListener{ public void onClick(); } //2:,声明接口变量, private OnClickListener mlistener; //3:创建方法调用接口 public void setOnClickListener(OnClickListener listener){ mlistener=listener; }
//4:通过变量调用抽象方法
mlistener.onClick();(2)在B类的代码如下
private MyButton myButton; //这里我是自定义的ButtonmyButton.setOnClickListener(new MyButton.OnClickListener() { @Override public void onClick() { System.out.println("hello world");}});(3)再次理解回调机制,为什么说"需要B类去实现,B类实现该方法后,它本身不会去调用该方法,而是传递给A类,供A类去调用?"我们在A类中定义了一个接口,接口当中还含有一个抽象方法,这个抽象方法没有具体的实现,当我需要时候自己去实现这个方法,比如这里的B类,这句话可能难以理解:B类实现该方法后,它本身不会去调用该方法,而是传递给A类,供A类去调用,或许会认为,在B类的onClick()方法中我不是写了具体的实现嘛,其实真的是这样吗?来看一下相关源码。由上图可知Button是继承View的,所以为了方便,我就在Android 的View类中查看源码。在View类中有setOnClickListener()方法,如图:以下两图是关键代码:先看下performClick()方法:在父类中我们要用到onClick()方法,但是父类却没有去实现该方法,而是定义了一个方法setOnClickListener(OnClickListener l),如果子类想要自己能够响应点击事件,则它就必须重写父类的该方法,实现OnClickListener接口和它的onClick()方法。在子类实现该接口和方法后,将其通过参数传递给父类,在父类中执行onClick()方法。再看OnTouchEvent()方法由此可以看出在OnTouchEvent()方法中调用了performClick()方法,由此产生了回调。这就是我理解回调的过程
相关文章推荐
- Java以及Android回调机制的一些理解
- 彻底理解android中的回调机制
- Android监听回调的一些理解
- 对于Android中接口回调机制的理解
- android官方Api 理解Activity生命周期的回调机制(适合有基础的人看)
- Android回调机制的理解
- Android中的回调机制(基础理解)
- 【Java/Android】对回调机制的理解
- Android接口回调机制(有图有真相,如果你一直接触接口回调,但是自己又一直理解不了,这篇文章会让你秒懂)
- 理解Android中的回调机制
- 对于Android中消息机制的一些理解
- 我的理解---android回调机制
- 深入理解Android之接口回调机制
- 对于Android中消息机制的一些理解
- Android开发中的事件分发和消费机制的一些理解
- 由浅入深理解Android中的回调机制(一)
- 回调机制的一些理解
- android中回调机制,小demo可以理解
- android官方Api 理解Activity生命周期的回调机制(适合有基础的人看)
- 由浅入深理解Android中的回调机制(二)【实现简易购物车功能】