1.方法回调
一种解耦合的设计思想:分离 功能定义 与 功能。在Java中回调是通过接口来实现的,达到接口统一,实现不同。
2.回调机制概述
对于基于回调的事件处理模型来说,事件源和事件监听器是统一的,当事件源发生特定事件之后,该事件还是由事件源本身负责处理的。
为了实现回调机制的事件处理,Android为所有GUI组件提供了一些事件处理的回调方法,以View为例:
boolean onKeyDown(int keyCode,KenyEvent enent):当用户在该组件上按下某个键时触发的方法。
boolean onKeyLongPress(int keyCode,KeyEvent event):当用户在该组件上长按某个按键时触发的方法。
boolean onKeyShortcut(int keyCode,KeyEvent event):当一个键盘快捷键事件触发时 触发的方法。
boolean onKeyUp(int keyCode,KeyEvent event):当用户在该组件上松开某个按键时触发的方法。
boolean onTouchEvent(MotionEvent event):当用户子在该组件上触发触摸屏事件时 触发的方法。
boolean onTrackballEvent(MotionEvent event):当用户在该组件上触发轨迹球屏事件时触发该方法。
总结:事件回调,UI组件不但是事件源,而且还是事件监听器,通过UI组件的相关回调方法处理对应的事件
(重写UI组件或者Activity的回调方法,用于处理一些具有通用性的事件)
eg:事件(着火)——事件源|事件监听器(商场)
3.基于回调的事件传播
1)几乎所有基于回调的事件处理方法都有一个boolean类型的返回值,该返回值用于标识该处理方法是否能完全处理该事件:
1.如果返回true,表明该处理方法已完全处理该事件,该事件不会传播出去。
2.如果返回false,表明该处理方法并未完全处理事件,该事件会传播出去。
2)对于基于回调的事件传播而言,某组件上所发生的事情不仅激发该组件上的回调方法,也会触发该组件所在Activity的回调用法【前提是只要 事件能传播到该Activity】
3)要使用回调事件,则要自定义组件,重写其回调方法。
4.事件处理的顺序
触发组件绑定的事件监听——》触发组件提供的事件回调——》传播到该组件所在的Activity
即:监听器--->view组件的回调方法--->Activity的回调方法
5.基于回调的onTouchEvent
1)同样是触碰事件,但是onTouchEvent更多的是用于自定义的view,所有的view类中都重写了该方法,而这种触摸事件是基于回调的
2)onTouchEvent其实和onTouchListener是类似的,只是处理机制不用,前者是回调,后者是监听模式