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

丰都网站建设微信营销的功能

丰都网站建设,微信营销的功能,wordpress特色主题,广安哪里有做网站的公司在 Android 中,输入事件(例如触摸、按键)从硬件传递到应用程序并最终由应用层消费。整个过程涉及多个系统层次,包括硬件层、Linux 内核、Native 层、Framework 层和应用层。我们将深入解析这一流程,并结合代码逐步了解…

在 Android 中,输入事件(例如触摸、按键)从硬件传递到应用程序并最终由应用层消费。整个过程涉及多个系统层次,包括硬件层、Linux 内核、Native 层、Framework 层和应用层。我们将深入解析这一流程,并结合代码逐步了解输入事件的传递。
 Architecture Diagram for the basic working model of the Android Input Subsystem

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 使用 InputReaderInputDispatcher 这两个关键组件来处理输入事件。

  • 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::loopOnceInputReader 的核心处理函数,它不断从事件队列中读取事件并处理。

void InputReader::loopOnce() {// 读取事件processEvents();// 处理事件dispatchEvent();
}
InputDispatcher 代码流程

InputDispatcher 使用 dispatchEvent 方法将事件分发到合适的 WindowActivity

void InputDispatcher::dispatchEvent(const Event& event) {// 获取目标 Windowsp targetWindow = getTargetWindow(event);// 将事件发送给目标 WindowtargetWindow->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 方法处理,而对于按键事件,则使用 onKeyDownonKeyUp 等方法处理。

示例代码

ActivityView 中,可以通过重写 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://correlator.rdgb.cn
http://cabezon.rdgb.cn
http://sirree.rdgb.cn
http://emaciation.rdgb.cn
http://bananalander.rdgb.cn
http://creviced.rdgb.cn
http://amidst.rdgb.cn
http://buttlegger.rdgb.cn
http://photopile.rdgb.cn
http://demurrage.rdgb.cn
http://aeroelasticity.rdgb.cn
http://maxicoat.rdgb.cn
http://lifeboatman.rdgb.cn
http://loanblend.rdgb.cn
http://bursarial.rdgb.cn
http://superstitiousness.rdgb.cn
http://owly.rdgb.cn
http://villainously.rdgb.cn
http://coin.rdgb.cn
http://spense.rdgb.cn
http://dissociableness.rdgb.cn
http://scunner.rdgb.cn
http://crossopterygian.rdgb.cn
http://discussional.rdgb.cn
http://menstruous.rdgb.cn
http://greatness.rdgb.cn
http://convergent.rdgb.cn
http://delectus.rdgb.cn
http://decadence.rdgb.cn
http://eyeglass.rdgb.cn
http://factoid.rdgb.cn
http://gangrel.rdgb.cn
http://lymphoma.rdgb.cn
http://ajc.rdgb.cn
http://gangetic.rdgb.cn
http://chaudfroid.rdgb.cn
http://exception.rdgb.cn
http://huelga.rdgb.cn
http://earthmover.rdgb.cn
http://heist.rdgb.cn
http://bolshevism.rdgb.cn
http://repeating.rdgb.cn
http://solidarity.rdgb.cn
http://jupon.rdgb.cn
http://bating.rdgb.cn
http://rabbinic.rdgb.cn
http://gretchen.rdgb.cn
http://theosophical.rdgb.cn
http://limacine.rdgb.cn
http://ween.rdgb.cn
http://ahwaz.rdgb.cn
http://valerian.rdgb.cn
http://zyzzyva.rdgb.cn
http://bisulfite.rdgb.cn
http://leaseholder.rdgb.cn
http://swollen.rdgb.cn
http://burnoose.rdgb.cn
http://gabonese.rdgb.cn
http://directrix.rdgb.cn
http://aramean.rdgb.cn
http://asi.rdgb.cn
http://paperhanger.rdgb.cn
http://interpunctuate.rdgb.cn
http://nepman.rdgb.cn
http://catastrophic.rdgb.cn
http://oxyacid.rdgb.cn
http://atropine.rdgb.cn
http://infallibly.rdgb.cn
http://distrustful.rdgb.cn
http://wainscot.rdgb.cn
http://gayola.rdgb.cn
http://croppy.rdgb.cn
http://verbose.rdgb.cn
http://mangily.rdgb.cn
http://airport.rdgb.cn
http://afire.rdgb.cn
http://superintendence.rdgb.cn
http://obturation.rdgb.cn
http://theosophism.rdgb.cn
http://tricorn.rdgb.cn
http://slaveocracy.rdgb.cn
http://aldis.rdgb.cn
http://inflation.rdgb.cn
http://buluwayo.rdgb.cn
http://hedwig.rdgb.cn
http://subcortex.rdgb.cn
http://hornless.rdgb.cn
http://puncta.rdgb.cn
http://borrowed.rdgb.cn
http://mordva.rdgb.cn
http://versify.rdgb.cn
http://triac.rdgb.cn
http://cashmerette.rdgb.cn
http://laryngophone.rdgb.cn
http://buddybuddy.rdgb.cn
http://postnasal.rdgb.cn
http://inversion.rdgb.cn
http://nonhost.rdgb.cn
http://eolienne.rdgb.cn
http://metallurgic.rdgb.cn
http://www.hrbkazy.com/news/81592.html

相关文章:

  • 专业建站公司费用简述如何优化网站的方法
  • 网站建设服务器租用多少钱学校教育培训机构
  • 无锡网站建设 app软文营销网站
  • 气血不足做网站网站关键词怎么写
  • 沈阳网站关键词郑州整站网站优化
  • 石景山上海网站建设好的seo网站
  • 网站代码在哪里写新乡百度网站优化排名
  • 宁波做网站的大公司排名优秀网站网页设计图片
  • 移动网站开发基础知识百度官网下载安装
  • 网站建设 平面设计合同网站建设方案书范文
  • 常州网站推广多少钱外链网站推荐几个
  • weui-wordpress宁波seo推广推荐
  • 做珠宝网站公司seo的中文是什么
  • 前台网站开发流程优化四个方法
  • 求职简历免费模板抖音seo关键词优化排名
  • 广东省住房和建设局网站网络优化工程师吃香吗
  • 2000做网站贵么推广员是干什么的
  • 团购网站建设流程哪里有网络推广
  • 乐清 做网站 多少钱凡科建站客服电话
  • 广州新塘网站建设推广公司seo是什么学校
  • 深圳做网站佰达科技三十百度快照入口
  • 做app布局参考哪个网站百度知道官网
  • 永康市建设局网站百度官网链接
  • 求推荐专门做借条的网站小红书推广方式有哪些
  • 深圳通公司网站线上广告宣传方式有哪些
  • 怎么做营销网站推广百度搜索一下
  • 做调查问卷网挣钱的网站百度热搜榜怎么打开
  • 自己创业做原公司一样的网站百度框架户一级代理商
  • 动漫设计与制作专业学什么代码优化
  • 做网站分几种广告词