标题和描述均聚焦于“Android与Symbian应用程序框架”的对比分析,这要求我们深入探讨两个操作系统中的应用程序架构,特别是它们在消息传递、绘图、窗口与控件管理以及输入法处理上的差异。 ### Symbian应用程序框架 #### 窗口与控件 在Symbian中,`RWindow`是最主要的属性承载者,其核心属性包括`rect`与`z-order`,用于定义窗口的位置和层级。窗口通常通过`windowgroup`形成树状结构,这种结构有助于管理和组织界面元素。`CCoeControl`类封装了一个`Rwindow`对象,为用户提供高级接口来操作窗口。`GC`类封装了绘图方法,负责将绘制的结果写入设备的`framebuffer`,这是绘图操作的底层实现。 #### 消息接收与分发 Symbian的消息系统中,`Cone`作为消息循环的核心,使用`RWsSession`向`wserv`请求消息。消息被`Cone`分发到`CCoeAppUi`,而UI类则根据`controlstack`(即`iStack`成员)分发消息,确保每个控件都能接收到并处理相应事件。特别地,输入法(`fep`)在控制堆栈中的优先级最高,因此任何输入消息都会首先被输入法捕获和处理。 #### 输入法处理 `Cone`对输入法有特殊处理,确保输入消息优先发送给输入法组件,这使得输入法能够在用户界面的最前端工作,提高用户体验。 ### Android应用程序框架 #### 基本结构 Android的应用程序框架采用了更现代化的设计,基于`Window/View/Surface`的概念构建。每一个`Activity`默认关联一个`PhoneWindow`,该窗口包含一个`DecorView`作为所有视图的根节点,形成树状结构。这与Symbian中的`RWindowGroup`扮演的角色类似。`Layout`作为一个`ViewGroup`,在Symbian中则不强调`group`概念,而重视`parent,sibling`关系。 #### 绘图 在Android中,`Canvas`与Symbian中的`GC`相对应,但绘图机制有所不同。`View`是被动接受由`ViewRoot`提供的`canvas`,并在其上进行绘图。这个过程类似于Symbian中使用`SystemGc`进行绘图。`ViewRoot`还与`surface`交互,将绘制结果最终呈现到设备屏幕上。 #### 消息传递 Android的消息处理机制涉及`WindowManager`与硬件驱动之间的通信,而Symbian则通过`wserv`与媒体驱动交互。在消息分发方面,`ViewRoot`调用`RootHandler().dispatch()`方法,进一步调用`dispatchKey`。如果存在输入法,`KeyEvent`会被转发给输入法服务;否则,事件将通过`deliverKeyEventToViewHierarchy`方法传递给视图层次结构中的视图进行处理。值得注意的是,Android将输入法的`KeyEvent`拦截逻辑放在了客户端的`RootView`中,而不是服务器端的`WindowManagerService`中,这与Symbian的处理方式有所不同。 无论是Symbian还是Android,应用程序框架都围绕着窗口、视图、绘图和消息传递等核心概念构建,但各自采用了不同的设计哲学和技术实现。Symbian强调底层硬件的直接操作,而Android则更注重高层抽象和跨平台兼容性。两种框架的对比研究有助于我们理解不同操作系统在应用开发方面的设计理念和实践差异。
剩余8页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 6.1随机密码生成.py
- putty,linux客户端工具
- 丹佛丝堆垛机变频器参数配置起升、运行、货叉
- redhat-lsb-core,安装磐维数据库,安装oracle数据库等常用的依赖包
- lsb-release,安装磐维数据库,安装oracle数据库等常用的依赖包
- glibc-devel,安装磐维数据库,安装oracle数据库等常用的依赖包
- redhat-lsb-submit-security,安装磐维数据库,安装oracle数据库等常用的依赖包
- 可以在mac下开发的微雪esp32触摸屏开发板的支持包
- redhat-lsb-core,安装磐维数据库,安装oracle数据库等常用的依赖包
- redhat-lsb-core,安装磐维数据库,安装oracle数据库等常用的依赖包