WEB开发网
开发学院手机开发Symbian 开发 彻底理解 Symbian 活动对象 阅读

彻底理解 Symbian 活动对象

 2010-08-24 05:50:00 来源:WEB开发网   
核心提示:2、有两个虚方法必须继承:virtual void DoCancel() =0virtual void RunL() =0;RunL方法:活动调度器接收到异步函数返回的“完成”消息后,遍历在其注册的所有活动对象,彻底理解 Symbian 活动对象(3),如果活动对象的iActive = ETrue且iStatus !=

2、有两个虚方法必须继承:

virtual void DoCancel() =0virtual void RunL() =0;

RunL方法:活动调度器接收到异步函数返回的“完成”消息后,遍历在其注册的所有活动对象,如果活动对象的iActive = ETrue且iStatus != KRequestPending则调用活动对象的RunL方法,并将iActive设置成EFalse,以防下次轮询时仍然调用此活动对象。

在这里“RunL”这个名字会让很多人产生歧义,我刚开始接触的时候总以为和J2me中的Runnable接口的run方法差不多。其实在这里把“RunL”改为“NotifyRequestCompleteL”更贴切些。

再次声明一下,调用异步函数时,参数TRequestStatus& status都是以引用的方式传递的,如:

IMPORT_C void After(TRequestStatus &aStatus, TTimeIntervalMicroSeconds32 anInterval);

所以异步函数内部可以改变status的实参,也就是改变活动对象的类成员iStatus。 DoCancel()方法:基类CActive中有取消异步函数的方法Cancel(),调用Cancel()后,活动对象会通过DoCancel()方法通知应用程序做取消方法的后期工作,如删除对象及回收指针等。注意:在应用程序中如果想终止活动对象,要使用Cancel()方法调用而不是 DoCancel()方法。

3、活动对象的带优先级的构造函数:

基类CActive的构造函数原型如下:

protected:

IMPORT_C CActive(TInt aPriority);

此处将传入一个优先级枚举值,枚举值内容如下:

/**

Defines standard priorities for active objects.

*/

enum/**

A low priority, useful for active objects representing

background processing.

*/

EPriorityIdle=-100/**

A priority higher than EPriorityIdle but lower than EPriorityStandard.

*/

EPriorityLow=-20/**

Most active objects will have this priority.

*/

EPriorityStandard=0/**

A priority higher than EPriorityStandard; useful for active objects

handling user input.

*/

EPriorityUserInput=10/**

A priority higher than EPriorityUserInput.

*/

上一页  1 2 3 4 5 6 7 8  下一页

Tags:彻底 理解 Symbian

编辑录入:coldstar [复制链接] [打 印]
赞助商链接