WEB开发网
开发学院手机开发Symbian 开发 Symbian 逐步深入 阅读

Symbian 逐步深入

 2010-03-26 04:24:00 来源:WEB开发网   
核心提示:status!=KRequestPending对应的活动对象,然后执行RunL方法,Symbian 逐步深入(8),以事件的方式告知我们异步函数已经执行完成,从上述的流程中可以认识到:活动调度器是桥梁~CActiveScheduler* scheduler=new(ELeave)CActiveScheduler();C
status!=KRequestPending对应的活动对象,然后执行RunL方法,以事件的方式告知我们异步函数已经执行完成。

从上述的流程中可以认识到:活动调度器是桥梁~

CActiveScheduler* scheduler=new(ELeave)CActiveScheduler();

CActiveScheduler.Install(scheduler);//这里把调度器指向类内部的一个静态指针,后面的代码可以方便的使用CActiveScheduler的一系列函数

如:

IMPORT_C static void Add(CActive* aActive);//将活动对象加入活动调度器注册,以备使用

IMPORT_C static void Start();

IMPORT_C static void Stop();

上面已经说了ActiveScheduler,接下来说说活动对象CActive

我们使用一个类继承CActive类,则子类会生成如下的东西:

public:

TRequestStatus iStatus;//判断异步函数调用完成与否

private:

TBool iActive; //用于证明对象是否已经申请了异步函数

如:

RTime::After(iActive,100000);

SetActive();//为什么要这样子呢?

SetActive其实就是将 iActive=ETrue,用来标示活动对象已经申请了异步调用。所以一旦我们调用了异步调用,就需要有SetActive()函数。

之后,我们要实现两个重要的函数:

virtual void DoCancel()=0;

virtual void RunL()=0;

RunL()—上面已经说过,当一个活动对象执行完成之后,status会变成EActive。这个状态的改变是由活动对象自动识别的,执行完成之后做的事情,我们需要在RunL()进行编码,首先要将iActive=EFalse,因为异步函数After传入的参数都是引用,所以可以改变。

DoCancle():基类CActive中的取消活动对象的方法Cancle(),之后通知活动对象调用DoCancle做善尾操作,如删除对象等,!!!终止对象是由Cancle()来完成!!!

! AO,AS是很复杂的东西,需要你自己多去了解!

遇到错误:KERN-EXE 3 错误原因是一个对象没有new,但是用它去指向一些东西

CONF 14 资源id无法获取

KERN-EXE X 在UI的时候发生错误,原因是

E32USER-CBASE 40 调用基于CActive的析构函数时存在未完成的请求。

case XX:

{

//error

//break我写在这里

}

上一页  3 4 5 6 7 8 9  下一页

Tags:Symbian 逐步 深入

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