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

杨浦集团网站建设新闻 今天

杨浦集团网站建设,新闻 今天,做网站搭建的公司,wordpress 多图上传插件1. 硬件层到Linux内核 设备节点:触摸事件由内核驱动捕获,写入/dev/input/eventX。关键结构体:input_event(包含时间戳、类型、代码、值)。 2. Native层处理(system_server进程) 2.1 EventHub …

 


1. 硬件层到Linux内核
  • 设备节点:触摸事件由内核驱动捕获,写入/dev/input/eventX
  • 关键结构体input_event(包含时间戳、类型、代码、值)。

2. Native层处理(system_server进程)
2.1 EventHub
  • 路径frameworks/native/services/inputflinger/EventHub.cpp
  • 职责:通过epoll监听设备节点,读取原始事件。
  • 关键函数
     

    CPP

    size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSize);

2.2 InputReader
  • 路径frameworks/native/services/inputflinger/InputReader.cpp
  • 职责:将原始事件转换为KeyEvent/MotionEvent
  • 线程模型InputReaderThread循环调用loopOnce()
  • 关键类
    • InputDevice:设备抽象。
    • TouchInputMapper:处理触摸事件映射。
     

    CPP

    void InputReader::loopOnce();

2.3 InputDispatcher
  • 路径frameworks/native/services/inputflinger/InputDispatcher.cpp
  • 职责:事件分发策略管理,通过InputChannel发送事件到应用。
  • 关键函数
     

    CPP

    void InputDispatcher::dispatchOnce(); // 主分发循环 status_t InputDispatcher::dispatchMotion(...); // 处理MotionEvent分发

  • 数据传递InputEvent封装为InputMessage,通过共享内存或Socket传递。
2.4 InputChannel与跨进程通信
  • IPC机制:基于Socket或共享内存(ashmem)。
  • 关键类
    • InputChannel:封装通信通道(服务端/客户端各一个Socket)。
    • InputWindowHandle:关联窗口焦点信息。
  • 注册流程:应用通过ViewRootImpl.addToDisplay()注册窗口时,通过WindowManagerService创建InputChannel

3. 应用进程处理(App进程)
3.1 NativeInputEventReceiver
  • 路径frameworks/base/core/jni/android_view_InputEventReceiver.cpp
  • 职责:通过Looper监听InputChannel,接收事件。
  • 关键函数
     

    CPP

    status_t NativeInputEventReceiver::consumeEvents(...); // JNI层事件接收

3.2 ViewRootImpl.WindowInputEventReceiver
  • 路径frameworks/base/core/java/android/view/ViewRootImpl.java
  • 职责:将事件传递给Java层。
  • 关键代码
     

    JAVA

    final class WindowInputEventReceiver extends InputEventReceiver { @Override public void onInputEvent(InputEvent event) { enqueueInputEvent(event, this, 0, true); } }


4. Java层事件分发
4.1 ViewRootImpl分发入口
  • 关键函数
     

    JAVA

    void deliverInputEvent(InputEvent event) { // 调用DecorView的dispatchInputEvent mView.dispatchPointerEvent(event); }

4.2 Activity/View树分发
  • 流程
    1. ActivitydispatchTouchEvent() → Window.superDispatchTouchEvent()
    2. DecorViewdispatchTouchEvent() → Activity.dispatchTouchEvent()
    3. ViewGrouponInterceptTouchEvent() → dispatchTouchEventToChildren()
    4. ViewonTouchEvent()处理事件。
  • 关键方法
     

    JAVA

    // ViewGroup public boolean dispatchTouchEvent(MotionEvent ev); public boolean onInterceptTouchEvent(MotionEvent ev); // View public boolean onTouchEvent(MotionEvent event);

4.3 MotionEvent对象复用
  • 优化机制:通过MotionEvent.obtain()复用对象,减少GC压力。

5. 关键数据结构
  • InputEvent:基类,包含设备ID、事件时间。
  • MotionEvent:存储触摸坐标、动作(ACTION_DOWN/ACTION_MOVE等)。
  • InputMessage:跨进程传输的二进制结构,包含事件类型、窗口令牌等。

6. 超时与ANR机制
  • InputDispatcher:等待应用finishInputEvent()确认处理,超时(默认5秒)触发ANR。
  • 监控逻辑:在InputDispatcher::dispatchEntryLocked()中设置超时检查。

http://www.dtcms.com/wzjs/153569.html

相关文章:

  • 做门头上那个网站申报互联网推广怎么找客户
  • 张家明做网站seo搜索引擎优化5
  • 《网站开发技术》模板乐天seo培训中心
  • 深圳做网站优化工资多少搜索引擎营销广告
  • 官方网站下载打印机驱动搜索软件排行榜前十名
  • 合肥 网站建设中央网站seo
  • 有空间与域名 怎么做网站网络服务主要包括什么
  • 营销网站怎么做福州百度seo
  • 深圳营销型网站建设哪家好百度 营销怎么收费
  • dw网站制作怎么做滑动的图片建立网站一般要多少钱
  • 自己免费网站建设青岛seo关键词优化公司
  • 南昌市公司网站建设北京网站seo费用
  • 怎么做能打不开漫画网站站外推广免费网站
  • 网站建设金手指什么推广平台比较好
  • 门户网站建设创新搜索引擎下载安装
  • 石家庄有哪些公司可以做网站模板建站难吗
  • 网站个人备案域名解析在线查询
  • 上海市建设网站长沙网站推广服务公司
  • 兴义网站seo电脑系统优化软件
  • 建设银行网站苹果电脑石家庄新闻网头条新闻
  • 免费网站建设代理长尾关键词排名系统
  • 公司网站建设哪儿济南兴田德润实惠吗网站制作app
  • 养殖网站 模板西安seo服务外包
  • 鼓楼做网站价格搜索引擎优化的英文缩写是什么
  • wordpress建站 客户端临沂做网络优化的公司
  • 网站开发颜色代码写文章在哪里发表挣钱
  • 购物网站开发背景及意义宁波网站快速优化
  • 网站设计论文摘要百度网盘客服人工电话
  • 网奇e游通旅游网站微信客户管理
  • 做网站一般收取多少钱如何做好线上推广和引流