在Symbian操作系统中,活动对象(CActive)是一种核心机制,用于实现异步操作,以节省系统资源,特别是对于内存有限的嵌入式设备如手机。活动对象并不实际创建线程,而是将多个并发执行的任务在一个线程中管理,通过活动规划器(ActiveScheduler)进行调度。 让我们理解一下基本概念: 1. CActive对象:这是Symbian中的一个基类,用于处理延迟执行的异步任务。当任务完成后,它会调用RunL()方法,或者如果任务被取消,则调用DoCancel()。 2. CActiveScheduler:这是一个全局单例对象,负责管理所有活动对象的执行顺序和调度。安装活动规划器后,CActive对象可以通过CActiveScheduler::Add()方法加入到调度队列中。 在给出的示例中,作者创建了一个名为TimeCount的活动对象,用于计数。下面是关键步骤的详细解释: - TimeCount类继承自CActive,这意味着它具备处理异步事件的能力。构造函数中,CActiveScheduler::Add(this)将TimeCount对象添加到活动规划器中。 - TimeCount::NewLC()是创建并初始化TimeCount对象的构造函数,使用了CleanupStack来确保对象在异常发生时能被正确释放。 - StartL()方法启动计数过程,通常会设置定时器或其他异步操作的初始状态。 - RunL()是当定时器触发或事件发生时调用的方法,用于执行计数相关的逻辑。 - DoCancel()用于取消当前正在进行的计数任务,通常在用户取消操作或应用程序关闭时调用。 - setDelayTime()用于设置计数间隔时间。 - CActive的基类中,优先级可以通过构造函数传递,这影响活动对象的调度顺序,优先级高的对象先执行。 在主程序中,首先创建了CTrapCleanup对象来处理异常,然后创建并安装了CActiveScheduler。在doInstanceL()函数中,真正创建并启动了TimeCount对象。当doInstanceL()执行完毕,通过CleanupStack::PopAndDestroy()清理TimeCount对象和活动规划器。 这个简单的计数器例子展示了Symbian中如何利用活动对象和活动规划器来实现异步操作。通过这种方式,开发者可以在不消耗额外线程资源的情况下,实现类似并发的效果,这对于资源有限的移动设备来说尤其重要。
- 粉丝: 0
- 资源: 926
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Chrome代理 switchyOmega
- GVC-全球价值链参与地位指数,基于ICIO表,(Wang等 2017a)计算方法
- 易语言ADS指纹浏览器管理工具
- 易语言奇易模块5.3.6
- cad定制家具平面图工具-(FG)门板覆盖柜体
- asp.net 原生js代码及HTML实现多文件分片上传功能(自定义上传文件大小、文件上传类型)
- whl@pip install pyaudio ERROR: Failed building wheel for pyaudio
- Constantsfd密钥和权限集合.kt
- 基于Java的财务报销管理系统后端开发源码
- 基于Python核心技术的cola项目设计源码介绍