Symbian 编程之活动对象正解
2010-03-18 20:58:00 来源:WEB开发网总结一下:系统中有一个“活动调度器”,我们建立一个“活动对象ao1”,将该对象与某个系统中的异步函数绑定,然后将该活动对象注册到“活动调度器”中, “活动调度器”会等待异步函数返回的“完成”消息。收到完成消息后,调度器遍历所注册的活动对象,如果发现status != KRequestPending则找到该status对应的“活动对象ao1”,调用其中的RunL方法,以事件的方式告知我们异步函数已经执行完成。
Symbian 编程总结-基础篇-活动对象正解(2)-使用活动对象
我们已经大致了解了活动对象的基本概念,要使用活动对象机制,需要用到活动对象、活动调度器、异步函数。我们想使用异步函数,要按照应用程序->活动对象->活动调度器->异步函数的流程来使用。接下来我们开始进入实战,使用活动对象。
一、创建活动调度器
我们知道,活动调度器是应用程序和异步函数之间的桥梁,应用程序使用活动对象通过活动调度器去截获异步函数的返回“完成”消息,并以事件的方式通知应用程序。
使用Carbide C++ 1.3,通过模板向导生成的控制台程序自动为我们生成了创建活动调度器的代码:
CActiveScheduler* scheduler = new (ELeave) CActiveScheduler(); CActiveScheduler::Install(scheduler);CActiveScheduler::Install()方法调用以后,内部代码就会将scheduler指针赋值给CActiveScheduler类内部的静态指针,后面的代码就可以方便的使用 CActiveScheduler类的静态方法,如:
IMPORT_C static void Add(CActive* aActive); IMPORT_C static void Start(); IMPORT_C static void Stop();Add()方法:将活动对象加入活动调度器中注册,以备使用
Start()方法:启动活动调度器,活动调度器将开始循环等待异步函数返回的通知消息
Stop()方法:停止活动调度器
二、创建活动对象
1、我们创建的活动对象必须派生自CActive类,CActive类已经为我们准备好了iStatus成员变量:
public: TRequestStatus iStatus;private: TBool iActive;另外一个成员变量iActive起着标识作用,证明该活动对象已经请求了异步函数,如:
RTimer::After(iStatus, 1000000);SetActive(); SetActive()方法为基类CActive的方法,其实就是将iActive = ETrue;,用来标识活动对象已经调用了异步函数。所以,我们只要调用了异步函数,在调用异步函数的代码后面应该紧挨着调用SetActive()方法的代码。
更多精彩
赞助商链接