Android事件分发机制简述

本文深入解析Android的事件分发机制,详细介绍了View、ViewGroup及其事件处理过程,包括onInterceptTouchEvent、dispatchTouchEvent、onTouchEvent的作用及相互关系。

android的事件分发机制有两个主角:View、ViewGroup
ViewGroup包含View,作为孩子的View又可以作为ViewGroup包含下一级View……
ViewGroup有三个事件:onInteceptTouchEvent、dispatchTouchEvent、onTouchEvent

说一下我的理解:
onInteceptTouchEvent负责事件拦截
dispatchTouchEvent负责事件分发
onTouchEvent负责事件处理
View只有dispatchTouchEvent、onTouchEvent作用同上。

下面说一下这之间的作用关系:

1.onInteceptTouchEvent,返回boolean,false表示不拦截事件 事件传递到下一级view

2.dispatchTouchEvent ,返回boolean。 true: 表示不往下分发,又自己处理,然后执行onTouchEvent来处理事件(PS:dispatchTouchEvent本身不处理事件); false: 分发事件 事件传递到下一级view

3.onTouchEvent, 处理事件

以上是我的理解,感觉这么解释更好理解,说的不对的地方欢迎留言指正。想要深入研究的同学出门左转大神的博客:http://www.cnblogs.com/linjzong/p/4191891.html

NFC标签分发系统(Tag Dispatch System)是Android平台上用于管理和处理NFC标签的一种机制。其核心功能是识别和分类检测到的NFC标签,并将它们传递给能够处理这些标签的应用程序。这一过程确保了多个应用可以同时监听并响应NFC事件,从而实现灵活的功能扩展。 当设备检测到一个NFC标签时,系统首先解析标签中的数据,特别是其中的NDEF(NFC Data Exchange Format)消息。NDEF是一种标准化的数据格式,支持不同类型的数据封装,如文本、URI或自定义数据类型[^2]。系统根据NDEF记录的内容进行分类,例如,如果记录是一个URL,则将其归类为`text/plain`或`application/vnd.android.nfc.ndef.mime`等类型。 随后,系统会检查已安装的应用程序是否注册了相应的Intent过滤器来处理该类型的NDEF数据。应用程序可以通过在Manifest文件中声明`<intent-filter>`来表明自己对特定类型的NDEF数据感兴趣。例如,一个浏览器应用可以声明它希望接收所有URI类型的NDEF记录。如果有多个应用匹配同一类数据,系统会弹出“选择器”让用户决定使用哪个应用打开标签内容[^2]。 此外,系统还支持前台调度模式(Foreground Dispatch),允许当前处于前台的应用优先处理NFC事件。这种方式适用于需要即时响应的场景,例如支付应用在用户靠近POS机时立即处理支付请求。开发者可以通过`NfcAdapter` API 启用前台调度,并指定要监听的标签类型和技术[^3]。 ### NFC标签分发系统的代码示例 以下是一个简单的代码片段,展示如何在Android应用中启用NFC前台调度模式: ```java NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this); if (nfcAdapter != null && nfcAdapter.isEnabled()) { PendingIntent pendingIntent = PendingIntent.getActivity( this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); IntentFilter[] intentFiltersArray = new IntentFilter[]{}; String[][] techListsArray = new String[][]{ new String[]{NfcA.class.getName()} }; nfcAdapter.enableForegroundDispatch(this, pendingIntent, intentFiltersArray, techListsArray); } ``` 在上述代码中,`enableForegroundDispatch`方法启用了前台调度模式,并指定了监听的NFC技术类型(如NfcA)。这使得应用可以在其他NFC应用之前接收到标签信息。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值