android的事件处理机制有两种

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android的事件处理机制有两种相关的知识,希望对你有一定的参考价值。

参考技术A 1.基于监听的事件处理机制,有一个关键就是事件注册。 但是我们在实践的时候并没有自己手动的为某个视图控件注册监听器。
解答: 我们会经常用到 诸如 setOnclickListener(),OnTouchListener()方法等。 从字面意义理解,它为设置...监听器。 但是,它 跟注册还是颇有一些区别的。 我想注册实践监听器,就是将它挂在在一个线程上,也就是说有一个事件监听线程,那么,有事件的视图,就至少是双线程的程序了。 不过很可惜,在去看set..Listener的源码的时候,是看不到它在java源码方面的具体实现的。 也就是说,要么它依赖操作系统实现,要么它依赖jni实现,并且,事件线程由jni管理。 换言之,实现注册监听是由ni实现的。
2.事件源的触发流程:
解答: 学习过操作系统朋友应该知道,操作系统的很多操作都是通过中断来完成。 同理,比如一个点击事件,android手机硬件中,包括了一个触摸屏的硬件,它分为内屏和外屏。 其中负责触发屏幕点击和触摸中断的为内屏。 内屏大概由五个层次构成,具体有什么用不知道,反正我拆过~~~ 从内屏上,当有电容屏感应的时候,会接收到你触摸的位置信息,甚至触摸力度!!! 这个消息经由系统中断(具有最高优先级,应该是由最高优先级的进程通知)发送给cpu,经由cpu通过进程间的消息机制传递给这个进程(当前正在用户界面运行的进程,这时候只有一个),也就是这个程序运行的内存空间的某个点。(或者说通过广播机制,将这个事件发送给所有的app也是有可能的)。

Android事件处理机制

  包括监听和回调两种机制。

  1. 基于监听的事件处理:

  事件监听包含三类对象,事件源,事件,事件监听器。Android的事件处理机制是一种委派式(Delegation)事件处理方式:普通组件(事件源)将整个事件处理委托给指定的对象(事件监听器);当该事件源发生指定的事件时,就通知所委托的事件监听器,由事件监听器来处理这个事件。

  委派式事件处理方式类似于人类社会的分工协作。例如某单位发生火灾,该单位通常不自己处理该事件,而是通知消防局(事件监听器)去处理;发生治安事件,该单位通知公安局(事件监听器)去处理。而消防局、公安局也会同时监听多个单位的事件。这种委派式的事件处理机制将事件源和事件监听器分离,从而提高程序的可维护性。

  编程步骤如下:

A. 获取界面组件,如findViewById;

B. 实现监听器类,Java类,实现一个XxxListener接口;

C. 调用事件源的setXxxListener方法将监听器对象注册给界面组件。

  如果事件发生时,有比较多的信息需要传递给监听器,则需要将信息封装成Event对象。

  Activity本身一般不作为事件监听器,因为Activity的主要职责应该是完成界面初始化工作,如果此时也包含了事件处理器方法,混乱而且怪异。

  大部分事件监听器只使用一次,因为使用匿名内部类形式的事件监听器更合适。

  2. 基于回调的事件处理:

  与事件监听机制不同,基于回调的方法使用的是组件自身的事件处理方法。Android为所有GUI组件都提供了回调方法,如onKeyDownonKeyLongPress等。

  几乎所有基于回调的事件处理方法都有一个boolean类型的返回值。当事件被触发时,最先触发的是该组件上绑定的事件监听器,然后是该组件提供的事件监听方法,然后是该组件所在的Activity。如果中途遇到返回值为true,则停止传播。

以上是关于android的事件处理机制有两种的主要内容,如果未能解决你的问题,请参考以下文章

Android事件处理

Android事件处理

android事件处理概述

事件处理机制之Gestures(手势)

15小结

JavaScript事件驱动机制&定时器机制