当前位置: 首页 > news >正文

钦州住房和城乡建设局网站软考考试科目有哪些

钦州住房和城乡建设局网站,软考考试科目有哪些,wordpress商品展示插件,信用宁波企业网查询在 Android 中#xff0c;输入事件#xff08;例如触摸、按键#xff09;从硬件传递到应用程序并最终由应用层消费。整个过程涉及多个系统层次#xff0c;包括硬件层、Linux 内核、Native 层、Framework 层和应用层。我们将深入解析这一流程#xff0c;并结合代码逐步了解…在 Android 中输入事件例如触摸、按键从硬件传递到应用程序并最终由应用层消费。整个过程涉及多个系统层次包括硬件层、Linux 内核、Native 层、Framework 层和应用层。我们将深入解析这一流程并结合代码逐步了解输入事件的传递。 1. 输入事件的产生与传递 输入事件的产生是从硬件触摸屏开始的。触摸屏等输入设备检测到用户的操作如触摸、滑动然后将这些事件传递给 Linux 内核。 硬件层触摸屏等将物理触摸或按键操作转化为信号。内核层Linux 内核中的 Input 子系统负责接收这些输入信号并生成相应的事件。 在 Android 系统中输入事件从硬件传递到应用层的大致流程如下 触摸屏硬件层 → Linux 内核Input子系统 → Native Input System输入事件解析与分发 → Framework事件管理 → 应用层事件消费2. Linux 内核输入事件的生成与处理 内核的 Input 子系统接收到输入事件后将其转化为 input_event 结构。每个输入事件包括三部分 type事件的类型例如 EV_ABS 表示绝对坐标事件。code事件的具体代码例如 ABS_X 表示 X 轴坐标。value事件的值例如坐标值。 代码示例 在 Linux 内核中输入事件使用以下结构定义 struct input_event {struct timeval time; // 事件发生时间__u16 type; // 事件类型__u16 code; // 事件代码__s32 value; // 事件值 };当触摸屏收到用户的操作时会产生一系列 input_event 事件传递到 Linux Input 子系统。然后内核会将这些事件通过 /dev/input/eventX 文件接口暴露给用户态。 3. Native 层InputReader 和 InputDispatcher Android 使用 InputReader 和 InputDispatcher 这两个关键组件来处理输入事件。 InputReader从 Linux /dev/input/eventX 接口读取事件并解析为 Android 系统可以理解的 MotionEvent 或 KeyEvent。InputDispatcher将 InputReader 解析后的事件分发给应用程序的 Window。 在 Android 系统中InputManagerService 是输入系统的核心服务它在系统启动时被创建并负责管理整个输入事件的读取和分发。 InputReader 代码流程 在 InputReader 中EventHub 类负责打开 /dev/input/eventX 设备文件并读取事件。 void EventHub::openDevice(const char* deviceName) {// 打开设备文件int fd open(deviceName, O_RDWR);// 将设备文件添加到输入设备列表中mDevices.push_back(fd); }InputReader::loopOnce 是 InputReader 的核心处理函数它不断从事件队列中读取事件并处理。 void InputReader::loopOnce() {// 读取事件processEvents();// 处理事件dispatchEvent(); }InputDispatcher 代码流程 InputDispatcher 使用 dispatchEvent 方法将事件分发到合适的 Window 或 Activity。 void InputDispatcher::dispatchEvent(const Event event) {// 获取目标 Windowsp targetWindow getTargetWindow(event);// 将事件发送给目标 WindowtargetWindow-gt;sendEvent(event); }4. Framework 层事件分发WindowManagerService 在 Framework 层InputManagerService 将事件传递给 WindowManagerServiceWindowManagerService 负责管理所有窗口的输入焦点并将事件转发给有焦点的窗口。 代码流程 WindowManagerService 中的 dispatchPointerEvent 方法会根据窗口焦点来分发事件。 public void dispatchPointerEvent(MotionEvent event) {// 获取焦点窗口WindowState focusedWindow getFocusedWindow();if (focusedWindow ! null) {// 将事件发送到焦点窗口focusedWindow.sendInputEvent(event);} }5. 应用层事件消费View 和 Activity 最终事件到达应用层。对于触摸事件Android 使用 onTouchEvent 方法处理而对于按键事件则使用 onKeyDown、onKeyUp 等方法处理。 示例代码 在 Activity 或 View 中可以通过重写 onTouchEvent 来消费事件。 Override public boolean onTouchEvent(MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:// 处理按下事件break;case MotionEvent.ACTION_MOVE:// 处理移动事件break;case MotionEvent.ACTION_UP:// 处理抬起事件break;}return super.onTouchEvent(event); }总结 硬件层产生输入事件并传递到内核。Linux 内核接收输入信号并转化为 input_event。Native 层InputReader 和 InputDispatcher 解析和分发事件。Framework 层WindowManagerService 负责将事件传递给对应的窗口。应用层Activity 和 View 接收并消费事件。 这一整套流程保证了从物理输入到应用响应的链路完整性和效率。 参考 Android Input Framework Architecture
http://www.pierceye.com/news/487878/

相关文章:

  • 查公司的网站有哪些wordpress连接数据库出错
  • 找别人做网站需要什么信息湛江制作公司网站
  • 最简单的静态网站wordpress网络公司主题
  • 做外贸要做什么网站企业服务平台app下载
  • .net做网站开发吗企业网站维护合同
  • 有哪些做网站公司网站做关键词库的作用
  • 安全狗网站白名单指什么申请制作网站
  • 如何做高端网站建设香水推广软文
  • 移动网站建设优势优化设计电子课本下载
  • 做外贸英语要什么网站免费做app网站建设
  • 网站统计系统 怎么做遵义公共资源交易中心官网
  • 做外贸的有哪些网站廊坊网站建设公司哪个好
  • 深圳宝安网站建设学习网html5网页代码大全
  • 网站建设介绍会发言稿wordpress 工具栏
  • 重庆网站推广计划2017主流网站风格
  • 进贤网站建设做网站有什么优势
  • 免费购物网站源码网站收录是什么意思
  • 网站做端口映射如何创建公众号的步骤
  • 什么行业需要做网站网站系统升级需要多久
  • 网站产品推广网站建设功能规划
  • 2018年公司做网站注意事项WordPress标题美化
  • 西宁seo网站上海建设安检站网站
  • 网站友情链接模块介绍邯郸公司做网站
  • 怎样用织梦建设网站报个电脑培训班要多少钱
  • 河南省住房和城乡建设部网站首页安徽建设工程信息平台
  • 网站开发工程师的要求做seo要明白网站内容
  • 如何做天猫网站医学ppt模板免费下载网站
  • 网站上的通话功能怎么做网站用不用备案
  • 信誉好的模板网站建设wordpress 伪静态设置
  • wordpress主题外贸网站wordpress检查php版本号