Java回调机制
来源:互联网 发布:wpsoffice软件怎么用 编辑:程序博客网 时间:2024/05/08 06:41
引言
所谓java回调,一言以蔽之:对目标对象的“逆”引用。
同步回调
最经典的同步回调方法当属android中View类的onClick方法。
android在View的内部类中声明了点击事件的回调接口OnClickListenner:
/** * Interface definition for a callback to be invoked when a view is clicked. */ public interface OnClickListener { /** * Called when a view has been clicked. * * @param v The view that was clicked. */ void onClick(View v); }开发者在应用中需要用到View的某个子类如Button,ImageView,TextView等,当需要监听这个控件的点击事件,就需要在Activity中实现OnClickListener接口,并在代码中实现OnClick这一方法:
@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = null;switch (v.getId()) {case R.id.btnId1:intent = new Intent(MainActivity.this, DataTimePicker.class);startActivity(intent);break;case R.id.btnId2:intent = new Intent(MainActivity.this, AnalogDigitalClock.class);startActivity(intent);break;}}
我们现在看下View中OnClickListener的处理:
public class View implements Drawable.Callback, KeyEvent.Callback, AccessibilityEventSource { /** * Listener used to dispatch click events. * This field should be made private, so it is hidden from the SDK. * {@hide} */ public OnClickListener mOnClickListener; /** * Register a callback to be invoked when this view is clicked. If this view is not * clickable, it becomes clickable. * * @param l The callback that will run * * @see #setClickable(boolean) */ public void setOnClickListener(OnClickListener l) { if (!isClickable()) { setClickable(true); } getListenerInfo().mOnClickListener = l; } /** * Call this view's OnClickListener, if it is defined. Performs all normal * actions associated with clicking: reporting accessibility event, playing * a sound, etc. * * @return True there was an assigned OnClickListener that was called, false * otherwise is returned. */ public boolean performClick() { final boolean result; final ListenerInfo li = mListenerInfo; if (li != null && li.mOnClickListener != null) { playSoundEffect(SoundEffectConstants.CLICK); li.mOnClickListener.onClick(this); result = true; } else { result = false; } sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED); return result; }}当View发了生点击事件,View(Button,ImageView等)的performClick方法被调用,方法中OnClickListener实例对象回调MyActivity实现的onClick方法,实现对点击事件的处理:
btnId1.setOnClickListener(this);btnId2.setOnClickListener(this);
对目标对象的“逆”引用是回调的实现的关键,这其实也是Interface的经典用法之一。
- java回调机制
- java回调机制
- java回调机制
- java回调机制
- java回调机制
- java 回调机制
- java回调机制
- java回调机制
- java回调机制
- Java:回调机制
- java 回调机制
- Java:回调机制
- Java:回调机制
- Java回调机制
- Java回调机制
- Java:回调机制
- Java回调机制
- java回调机制
- 在jsp页面中使用FCKeditor
- ANSI和UNICODE
- 绝不重新定义继承而来的缺省参数值
- #yii框架学习之路#yii CUrlManager
- 使用FFMpeg进行H264编码
- Java回调机制
- 一些常用医学名词总结
- .balignl 16,0xdeadbeef浅析
- cmd下添加删除启动项
- VC 中TEXT、_T、L的区别
- ant编译时编码错误
- 二叉查找树的原理与实现 Binary Search Tree
- SPI、I2C、UART三种串行总线协议的区别
- OBJECT_METHOD初窥