- 浏览: 33355 次
- 性别:
- 来自: 北京
最新评论
原文地址:http://blog.csdn.net/maxleng/article/details/5561396
Android输入系统
依照惯例,在研究Android输入系统之前给出输入系统的本质描述: 从哲学的观点来看,输入系统就是解决从哪里来又将到哪里去问题。输入的本质上的工作就是收集用户输入信息并放置到目标位置。
Android在源代码分类上,并没有输入系统分类。本章的输入系统研究是一个综合的分析,前面的GWES的分析,特别是View的Focus Path以及Window Manager Proxy是本章分析的基础,如果没有理解,请参阅前面的窗口管理的相关章节。
Android输入系统的组成
输入系统由如下几部分组成:
- 1)后台窗口管理服务
- 2)Focus Activity
- 3)Focus Window
- 4)Focus View:用来接收键盘消息
从输入系统这个角度去看Android的Window Manager服务解决了用户信息输入收集,而FocusActvitiy,Focus Window、Focus View这些概念的设计是为了解决用户输入应该放到哪里去这个问题。在整个Android系统中,同时只有一个一个Focus Window,而属于该Window的Focus View才是真正的Focus View。
在Android系统中,在设计上要求多个Actvitiy同时存在运行。在实现中,每次把Actvitiy变成Focused Actvitiy时(setFocusedActivity@ActivityManagerService.java) 激活程序的时候,就把该Activity的主窗口设置成前景窗口,即系统中的顶层窗口,AppToken概念的引进就是为了解决窗口对象的归属问题。在这 个过程中,在逻辑上看,我们挑选了一个Activity作为了Focus Activity来接收系统的消息,实质上这个Focus Activity的Focus窗口就是前景窗口。
Focus 窗口的改变将改变焦点View,前景窗口的改变也将引起焦点View的变化。焦点和光标的概念用于管理输入设备和输入事件的传送。光标是一个绘制在屏幕之 上的小位图,指示当前的输入位置。键盘输入有类似的输入焦点和键盘输入插入符的概念。只有具有输入焦点的窗口才能获取键盘事件。改变窗口的焦点通常由特殊 的按键组合或者TouchEvent事件完成。具有输入焦点的窗口通常绘制有一个键盘插入符。该插入符的存在、形式、位置,以及该插入符的控制完全是由窗 口的事件处理例程完成的。
现在站在更宏观的位置来看Actvitiy的输入系统,可以从Linux Driver开始到输入框结束的整个链条,我这里给出大输入系统的概念,Android大输入系统包含:Linux driver, Window Manager, Message System, View Focus Path,Focus View。
Android输入系统架构图
现在从Android的代码分析的角度,来看看输入系统的组成。这个过程从代码中分析处理:
在Window Manager Service端
readEvent@com_android_server_KeyInputQueue.cpp
KeyQ@WindowMangerService.java
KeyInputQ@KeyInputeQueue.java
InputDispatcherThread@WindowMangerService.java
在Client端
IWindow@ViewRoot.Java
ViewRoot@ViewRoot.java
KeyInputQ在WindowMangerService中建立一个独立的线程InputDeviceReader,使用Native函数readEvent来读取Linux Driver的数据构建RawEvent,并放入到KeyQ消息队列中。
InputDispatcherThread从KeyQ中读取Events,找到Window Manager中的Focus Window,通过Focus Window记录的mClient接口,将Events专递到Client端。Client端在根据自己的Focus Path传递事件,直到事件被处理。
发表评论
-
Android核心分析(21)----Android应用框架之AndroidApplication
2012-02-13 14:34 775原文地址:http://blog.csdn ... -
Android核心分析(20)----Android应用程序框架之无边界设计意图
2012-02-13 14:31 895原文地址:http://blog.csdn ... -
Android核心分析(19)----电话系统之GSMCallTacker
2012-02-13 14:25 804原文地址:http://blog.csdn ... -
Android核心分析(18)-----Android电话系统之RIL-Java
2012-02-13 14:10 1142原文地址:http://blog.csdn.net/maxle ... -
Android核心分析(17) ------电话系统之rilD
2012-02-13 14:02 681原文地址:http://blog.csdn.net/maxle ... -
Android核心分析(16)-----Android电话系统-概述篇
2012-01-31 14:39 907原文地址:http://blog.csdn.net/m ... -
Android核心分析(15)--------Android输入系统之输入路径详解
2012-01-31 14:22 834原文地址:http://blog.csdn.net/maxle ... -
Android 核心分析(13) -----Android GWES之Android窗口管理
2012-01-31 10:44 817原文地址:http://blog.csdn ... -
Android 核心分析(12) -----Android GEWS窗口管理之基本架构原理
2012-01-31 10:27 1031原文地址:http://blog.csdn.net/maxle ... -
Android SurfaceFlinger中的SharedClient -- 客户端(Surface)和服务端(Layer)之间的显示缓冲区管理
2012-01-11 11:00 1351原文地址:http://blog.csdn.net/Droid ... -
Android核心分析 之十一-------Android GWES之消息系统
2012-01-10 14:09 671原文地址:http://blog.csdn.net/maxle ... -
Android核心分析 之十-------Android GWES之基本原理篇
2011-12-30 15:08 735原文地址:http://blog.csdn ... -
Android核心分析 之九-------Zygote Service
2011-12-30 15:02 757原文地址:http://blog.csdn.net/maxle ... -
Android 核心分析 之八------Android 启动过程详解
2011-12-30 14:56 637原文地址:http://blog.csdn.net/maxle ... -
Android 核心分析 之七------Service深入分析
2011-12-30 14:48 1131原文地址:http://blog.csdn.net/maxle ... -
Android 核心分析 之六 -----IPC框架分析 Binder,Service,Service manager
2011-12-30 14:41 937原文地址:http://blog.csdn.net/maxle ... -
Android 核心分析 之五 -----基本空间划分
2011-12-29 11:13 655原文地址:http://blog.csdn.net/maxle ... -
Android核心分析之四 ---手机的软件形态
2011-12-29 11:09 655原文地址:http://blog.csdn.net/maxle ... -
Android是什么 之三-------手机之硬件形态
2011-12-29 11:07 640原文地址:http://blog.csdn.net/maxle ... -
Android核心分析 之二 -------方法论探讨之概念空间篇
2011-12-29 11:03 592原文地址:http://blog.csdn.net/maxle ...
相关推荐
[经典文档]Android核心分析 核心分析之一 ----- 分析方法论探讨之设计意图 核心分析之二 ----- 方法论探讨之概念空间篇 核心分析之三 ----- 手机之硬件形态 核心分析之四 ----- 手机之软件形态 核心分析之五 ----- ...
Android 核心分析(14)------ Android GWES 之输入系统..........................................57 Android 核心分析(15)--------Android 输入系统之输入路径详解.............................. 59 Android 核心...
这篇文档主要探讨了Android GWES(Global Workspace Environment System)中的窗口管理机制,特别是涉及到Window、DecorView、View、IWindow、ISession以及WindowState等核心组件之间的关系。 1. **基本构架原理** ...
Android核心分析(14)------AndroidGWES之输入系统..........................................57 Android核心分析(15)--------Android输入系统之输入路径详解..............................59 Android核心分析...
Android核心分析是关于Android系统的深入研究和分析,涵盖了Android系统的架构设计、核心机制、软件和硬件形态、IPC框架、Service管理、启动过程、窗口管理、输入系统、电话系统、应用程序框架、GDI机制等方面的知识...
**Android核心分析(14):** 解释了GWES中的输入系统设计,包括触摸屏、键盘等输入设备的事件处理机制。 **Android核心分析(15):** 详细解析了输入事件在系统中的传递路径,包括从硬件设备接收事件到最终触发UI...
[转]Android核心分析 技术专题之十四--Android GWES之输入系统.
### Android核心分析——设计意图与方法论探讨 #### 一、设计意图的探索 在深入研究Android之前,首要任务是理解其背后的设计理念。对于一个跨平台开发者而言,熟悉并掌握Android的核心概念至关重要。Android引入...
#### 十四、AndroidGWES之输入系统 本章节讲解了Android输入系统的架构和工作原理。通过了解触摸屏、键盘等输入设备如何与系统交互,可以帮助开发者优化应用的用户体验。 #### 十五、Android输入系统之输入路径...
《Android核心分析》系列文档全面地探讨了Android操作系统的核心组件和机制,旨在深入理解其设计意图、工作原理以及实现方式。以下将详细解析各部分的关键知识点: 1. 设计意图:Android作为开源移动操作系统,其...
通过对Android核心分析文档的学习,我们不仅能够了解其底层技术实现,还能深刻体会到设计者在构建这一复杂系统时所遵循的原则和理念。从宏观到微观的分析方法帮助我们建立起对Android系统全面且深入的理解。这不仅是...
#### AndroidGWES之输入系统 输入系统处理用户的输入事件,如触摸、按键等,确保应用程序能够响应用户的操作。 #### Android输入系统之输入路径详解 输入路径是指从物理输入设备接收信号到最终处理这些信号的整个...
综上所述,《Android核心分析》不仅涵盖了Android系统的各个层面,还深入探讨了每个组成部分的设计思想和技术细节。这对于希望深入了解Android系统内部机制的开发者来说,是一份非常宝贵的参考资料。
6. Android GWES(Graphical, Windowing, Event, and Services subsystem):包括基本原理、消息系统、窗口管理、输入系统等方面的详细分析。 7. Android GDI(Graphics Device Interface):显示缓冲管理、共享缓冲...
### Android核心分析:深入探索与理解 #### 设计意图与分析方法论 在探究Android的奥秘时,首要任务是理解其设计背后的深意。Android并非仅仅是手机的代名词,也不是简单的开发平台或虚拟Java操作系统;它代表的是...
#### 十四、AndroidGWES之输入系统 分析GWES中的输入系统,包括输入事件的捕获、分发机制等。 #### 十五、Android输入系统之输入路径详解 详细解释了输入事件从硬件层到应用程序层的完整路径。 #### 十六、...