WEB开发网
开发学院手机开发Symbian 开发 Symbian之源码分析之EikStart.cpp 阅读

Symbian之源码分析之EikStart.cpp

 2010-07-04 15:43:00 来源:WEB开发网   
核心提示:开源了那么久,今天终于决定去看看那近2G的代码了,Symbian之源码分析之EikStart.cpp,我们先看看启动一个程序到初始化UI类完成系统都做了些什么,首先说下Eikon、Uikon、Avkon、Qikon的概念,节省了512字节的空间,Symbian默认的栈空间大小为8KB,在Symbian OS v5里UI

开源了那么久,今天终于决定去看看那近2G的代码了。我们先看看启动一个程序到初始化UI类完成系统都做了些什么。

首先说下Eikon、Uikon、Avkon、Qikon的概念。在Symbian OS v5里UI框架叫做Eikon,虽然它被设计成支持8位build和16位build,但事实上它只支持8位build。到了OS v5.1,Eikon开始支持16位build,为了体现这个改变,将Eikon更名为Uikon。这之后基于Uikon层之上衍生出了S60平台的应用程序框架”Avkon”(OS v6.0)以及UIQ平台的应用程序框架”Qikon”(OS v7.0)。

Uikon采用CEik、Avkon采用CAkn、UIQ采用CQik作为类名的前缀。

相关wiki:

http://wiki.forum.nokia.com/index.php/Uikon-Eikon-Avkon-Qikon

接下来进入主题,我们依旧以HelloWorld工程为例,看它的第一个文件HelloWorld.cpp:

#include

#include "HelloWorldApplication.h"

LOCAL_C CApaApplication* NewApplication()

{

return new CHelloWorldApplication;

}

GLDEF_C TInt E32Main()

{

return EikStart::RunApplication( NewApplication );

}

当一个程序启动时,都会调用E32Main()函数。NewApplication函数创建并返回一个CApaApplication实例,LOCAL_C即static的宏定义。RunApplication接收的参数是TApaApplicationFactory,其中有这么段定义:

class TApaApplicationFactory

{

public:

typedef CApaApplication* (*TFunction)();

};

所以这里传进去的是NewApplication函数的地址,工厂函数Factory的命名由此而来。EikStart::RunApplication()函数的关键代码如下:

EikStart::RunApplication(TApaApplicationFactory aApplicationFactory)

{

//创建命令行对象并获取程序启动命令行参数

CApaCommandLine* commandLine = NULL;

TInt error = CApaCommandLine::GetCommandLineFromProcessEnvironment(commandLine);

//更改进程名

//注意{}的妙用,这样TFileName就不会一直存在于栈上面,节省了512字节的空间。Symbian默认的栈空间大小为8KB,最大可为64KB。

{

1 2  下一页

Tags:Symbian 源码 分析

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