活动对象的使用
来源:互联网 发布:中小企业网络构建 编辑:程序博客网 时间:2024/04/30 00:19
*活动对象的典型用法:在某个应用中处理一些事件(如按键事件、屏幕更新等),一般用于在某个单一线程中实现非抢先式多任务。一般线程中都装有一个活动调度器,在这种情况下,程序员可以立即使用活动对象。但是在可执行程序(.exe)中或创建自己的线程时,必须先安装AS,再使用AO.
AO的具体使用:
1、创建AO,并将其加入到AS中-----
MyActiveObject::MyActiveObject() : CActive(0) // 这里可以设置活动对象的优先级
{
// 把自己加入AS中
CActiveScheduler::Add(this);
}
2、在AO中实现具体的异步请求(如StartL())。AO将iStatus作为该异步请求的一个参数传递,该异步方法将iStatus变量设定为KRequestPending,以表示该AO正在等待某个请求的完成,并将请求消息发送给服务器端。然后,异步方式返回,并调用SetActive()方法激活该AO(该方法向AS指出:必须追踪这个活动对象的完成)。
3、服务器端完成请求后,将结果代码赋给iStats变量。
4、AS追踪被激活的AO,若AO的iStatus不为KRequestPending,就调用RunL()方法。
**RunL()方法为处理服务器端返回的异步请求结果。它也可重新发起一个异步请求(即调用StartL()方法)。
另:AO中必须实现继承自CActive的纯虚函数--DoCancel(),该方法为取消正在运行的异步请求。
ps:AO中必须有service provider作为其构造函数的参数。
AS的使用:
Symbian OS中的每个进程都有一个主线程,这个主线程为这个进程创建一些额外的线程。若用到了AO,就必须为这个线程实例化AS,才能启动它以便对AO进行调度。
在可执行程序(.exe)或自己创建的线程中使用AO,就必须
1、用一下方法创建并安装一个AS
CActiveScheduler* exampleScheduler = new (ELeave) CActiveScheduler;
CleanupStack::PushL( exampleScheduler );
CActiveScheduler::Install();
2、用方法CActiveScheduler::Start()来启动它
3、在最后,在一个AO中调用CActiveScheduler::Stop()来停止该AS。并释放它:CleanupStack::PopAndDestroy(exampleScheduler).
***当该AS被启动时,如果并不存在任何等待中的未完成请求,这个线程将被永远挂起。
- 活动对象的使用
- 使用活动对象的异步服务机制
- symbian中活动对象的简单使用
- Symbian OS中的活动对象的使用
- Symbian OS中的活动对象的使用
- symbian中活动对象的简单使用
- 活动对象使用
- 活动对象的理解
- symbian中活动对象的一些简单的使用
- symbian中活动对象的一些简单的使用
- symbian中活动服务对象的一些简单的使用
- symbian中活动对象的一些简单的使用
- 【转】symbian中活动对象的一些简单的使用
- [整理]symbian中活动对象的简单使用
- [整理]symbian中活动对象的简单使用
- 活动对象框架之三:使用活动对象
- 活动对象的一些解释
- Symbian活动对象的原理
- 手机**##,试试看
- 沉淀生命 沉淀自己
- T-SQL入門攻略之9
- 计算机方向的一些顶级会议和期刊
- FUSE(Filesystem in Userspace)简介和使用
- 活动对象的使用
- 30 个 HTML5 学习资源
- T-SQL入門攻略之10
- Moodle开发笔记5-Course Format开发
- 经纬度到屏幕像素点的换算方法
- Moodle开发笔记6-Database操作
- Java语言是如何产生和发展的?
- Silverlight 2应用程序中XAP文件揭秘
- 各类排序算法