青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

franksunny的個人技術空間
獲得人生中的成功需要的專注與堅持不懈多過天才與機會。 ——C.W. Wendte

本文檔我上傳過程中圖片沒有粘貼上來,為此如果有人感興趣,請下載word文檔,地址是http://m.shnenglu.com/Files/franksunny/Symbian應用程序框架淺析.rar,歡迎大家給我指點。

Symbian 應用程序框架淺析

 

S60應用程序的運行依賴于大量的OS組件,例如屏幕繪圖和應用程序數(shù)據(jù)持久性等,可以直接使用OS的窗口服務器或者文件服務器即可。

 

應用程序核心框架類

應用程序框架由一套核心類組成,這些類是所有應用程序框架的基礎。這些類封裝了應用程序和所需OS服務器之間的相互作用。

應用程序核心框架類

第一層:CBaseCActive兩個基類,其中CActive也是派生于CBase,而CActive又被第二層的CConEnv派生

第二層:包含兩個基本組件:AppArcCONEAppArc代表應用程序架構,這些類提供了基本的應用程序結構、將系統(tǒng)信息提交到應用程序的機制,以及使用文件服務器持久化數(shù)據(jù)。其中的類在命名時都帶有前綴“*Apa”CONE是控制環(huán)境的縮寫,在這個組件中的類提供用于處理用戶輸入并創(chuàng)建用戶界面的機制--這些類主要用于和窗口服務器進行交互,其中的類在命名時都帶有前綴“*Coe”這一層中的許多類都是抽象類,僅僅定義了一個API的接口。

第三層:Uikon組件。這是具有豐富功能、非抽象框架類的一般性設備無關實現(xiàn),并且提供了一個在所有symbian OS上公用的UI庫層。一些具體的UI控件(比如列表框和滾動條等)都可以在該層創(chuàng)建,這些控件有時也被稱為Eikon控件。UIkon組件中的類在命名時都帶有前綴“*Eik”添加了一個公共的symbian OS實現(xiàn),和其他Symbian OS UI平臺共享。

第四層:由Avkon類組成,這些類提供了核心的S60 UI功能,例如菜單支持。Avkon控件的類在命名時都帶有前綴“*Akn”在框架上添加S60特有的實現(xiàn)。

第五層:針對應用程序的層,設計自己的應用程序,添加自定義應用程序實現(xiàn)。

以上提到的這些類簡單來說就是:視圖(View)、文檔(Document)、應用程序(Application)、應用程序UIApplication UI)。那么一個S60 UI應用程序是如何用這些類來實現(xiàn)其有機程序呢,這個就涉及到一個應用程序框架的初始化問題。

 

應用程序框架初始化

必須創(chuàng)建下面的每個方法,才能提供最小的S60應用程序:

a 框架入口:所有S60 UI都實現(xiàn)一個全局函數(shù)E32DLL()(非UI類的全局入口函數(shù)為E32Main),當應用程序啟動時,框架將首先調用該函數(shù),該函數(shù)也稱為DLL入口點,應用程序必須存在該函數(shù)。每個S60 UI 應用程序都是一個多態(tài)DLL

b、新建應用程序實例:讓框架調用NewApplication(),該函數(shù)是由DLL導出的唯一函數(shù),負責創(chuàng)建應用程序類的一個實例,并返回它的指針,以后框架使用該指針完成應用程序的創(chuàng)建。這里在堆上創(chuàng)建應用程序實例使用的是“new”方法而不是Symbian OS常見的“new (ELeave)”方法,這是因為TRAP harness(陷阱捕捉)這時還沒有創(chuàng)立。如果系統(tǒng)不能為新的實例分配內存,那返回的指針就是NULL,應用程序框架能夠檢查到并處理這個問題。

c、返回UID由框架調用AppDllUid()返回應用程序的UID。該函數(shù)必須返回在.mmp文件中指定的UID值,該值可用于確定應用程序的實例是否正在運行。如果一個應用程序正在運行,而要啟動這個程序的另一個實例,這時該運行的程序就會被切換到前臺,而不是重新生成一個。

d、新建文檔實例:框架通過框架調用應用程序類實例的CreateDocumentL()函數(shù)獲取指向新創(chuàng)建的Document類實例的指針。通過文檔實例指針,框架就可以調用文檔實例的某些功能,同時文檔實例也通過調用自身的NewL()和NewLC()雙重靜態(tài)構造函數(shù)(為什么是雙重構造,這跟Symbian的異常處理機制有關,而之所以設計成靜態(tài)函數(shù)我現(xiàn)在也還不是很清楚)來創(chuàng)建自己。

e、是否裝入文件:框架重新調用AppDllUid()來觀察是否要從文件系統(tǒng)中裝入一個文件。(似乎這里跟某些永久存儲信息有關,目前項目還沒用到這個功能,我也不知道這個該怎么用

f 新建AppUiView實例:框架通過調用文檔對象的CreateAppUiL()方法生成了一個AppUi實例并獲取指向它的指針。此處AppUi實例創(chuàng)建自身時使用的是C++的默認構造函數(shù)并返回實例的指針,之后框架通過這個指針調用AppUi實例的ConstructL()函數(shù)來完成構造。而在這個ConstructL()函數(shù)中首先調用的是AppUi基類的BaseContructL()函數(shù),處理了讀入與該程序相關的資源的事宜,其次是新建需要加載的View類的實例(通過雙重構造),如果不止一個View的情況下需要調用AddViewL()函數(shù)將新建的View實例加載進來,最后如果是多個View時通過SetDefaultViewL()函數(shù)設置缺省的默認視圖。如讀入一個與該程序相關的資源文件AppUi調用了AppView類的NewL函數(shù)來生成其實例,這里也是用的雙重構造

g View的重繪:通過以上的創(chuàng)建過程,框架已經擁有了View的無限調度權利,此時如果有一般的system事件框架就可以通過窗口服務器調用ViewDraw()函數(shù),至于這些System事件一般指程序啟動、應用程序獲得焦點或者選項菜單消失等等。在這里需要注意的是編程開發(fā)者并不能直接調用Draw,它要求在調用前系統(tǒng)的graphics context處于激活狀態(tài),如果編程開發(fā)者希望進行屏幕的重繪,則只能調用DrawNow()方法。還有就是Draw函數(shù)是不能異常退出的,這是因為該函數(shù)能被框架直接調用,而框架是不知道如何處理可能發(fā)生的異常的。因此Draw自己需要捕捉和處理可能發(fā)生的錯誤。

h 處理命令:完成以上步驟后,用戶可以通過比如菜單選項之類的交互UI使框架調用HandleCommandL()函數(shù),并傳遞一個參數(shù)aCommand,它指明了用戶所選擇的命令,HandleCommandL()會據(jù)此來判斷不同的命令以分別調度執(zhí)行。在此處還有一個必須注意的地方是如果要程序的View實例也回應用戶的按鍵,則必須將View實例通過AppUiAddToStackL()函數(shù)加入到AppUi實例的控件堆棧(control stack)中。具體的調用方式實現(xiàn)以按鍵來解釋如下流程所示:

對于上面的調用方式實現(xiàn)說明,個人覺得有必要再將AppUi的幾個重要事件處理方法羅列一下:

HandleWsEventL()用于處理窗口服務器傳遞的事件,它的作用使框架調用下面這些具體事件處理方法;

HandKeyEvent()用于處理用戶按鍵事件(此函數(shù)在控件堆棧為空時調用,否則框架將會調用OfferKeyEventL()函數(shù));

HandleForegroundEventL()當應用程序切換到前臺或從前臺切換到后臺時調用該函數(shù),默認的實現(xiàn)可以處理鍵盤焦點的改變;

HandleSystemEventL()用于處理由窗口服務器生成的事件;

HandleApplicationSpecificEventL()用于處理自己定義的自定義事件。默認的實現(xiàn)可以處理顏色方案改變的通知;

HandleCommandL()用于處理用戶選擇的菜單項;

HandleSwitchOnEventL()用于處理像設備切換之類的特定切換事件;

HandleMessageReadyL()用于處理窗口服務器產生的消息事件。

在以上各函數(shù)處理事件中,除了第一個HandleWsEventL()函數(shù)外,其它函數(shù)默認都是純虛函數(shù),需要重載才能用。

通過以上對應用程序框架初始化步驟后,一個完整的框架就創(chuàng)建完畢了,其具體過程可以由一個圖來形象做結。

本文中參考了網絡上的一些文章鏈接如下:

Symbian程序框架研究http://www.sf.org.cn/Article/lumen/200607/18837.html

Symbian開發(fā)初級手冊http://www.sf.org.cn/Article/lumen/200508/34.html

 

 

 

posted on 2007-09-21 06:56 frank.sunny 閱讀(3861) 評論(0)  編輯 收藏 引用 所屬分類: symbian 開發(fā)

常用鏈接

留言簿(13)

隨筆分類

個人其它博客

基礎知識鏈接

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品久线观看视频| 久久一二三四| 国产欧美三级| 亚洲欧美999| 久久亚洲美女| 亚洲人成网站精品片在线观看| 老司机久久99久久精品播放免费| 亚洲国产中文字幕在线观看| 亚洲一区二区三区影院| 久久精品视频播放| 蜜桃av一区二区三区| 久久精品欧美| 亚洲激情电影在线| 午夜精品视频一区| 亚洲国产精品免费| 国产精品久久久久婷婷| 国产女优一区| 亚洲国产精品一区| 亚洲无亚洲人成网站77777| 欧美jizz19性欧美| 久久av在线看| 日韩一级精品| 狠狠干综合网| 国产精品揄拍一区二区| 欧美日韩成人在线播放| 亚洲欧美日韩在线观看a三区| 久久久久久久久一区二区| 9久re热视频在线精品| 国产曰批免费观看久久久| 免费精品视频| 亚洲国产你懂的| 一本色道久久综合亚洲精品不| 91久久精品网| 亚洲大片av| 亚洲日本中文| 久久精品国产第一区二区三区最新章节 | 欧美午夜精品久久久久久孕妇 | 欧美精品日韩精品| 老巨人导航500精品| 国产精品高潮久久| 国产精品卡一卡二卡三| 亚洲国产影院| 久久久精品国产一区二区三区| 亚洲精选在线观看| 一区二区三区成人| 一区二区三区免费看| 欧美 日韩 国产一区二区在线视频 | 亚洲在线成人精品| 亚洲福利视频免费观看| 国产自产精品| 99精品福利视频| 女仆av观看一区| 欧美高清影院| 亚洲国产欧美日韩| 久久久久久高潮国产精品视| 麻豆国产va免费精品高清在线| 久久亚洲国产成人| 国产午夜精品一区理论片飘花| 国产午夜精品久久久久久久| 亚洲深夜福利| 久久精品国产亚洲精品| 亚洲午夜久久久久久久久电影院| 亚洲一区在线看| 国产精品乱码一区二三区小蝌蚪 | 久久一区精品| 亚洲黑丝在线| 亚洲区一区二区三区| 欧美人成免费网站| 国产欧美另类| 久久久久久久久久看片| 久久精品国产一区二区三| 国内精品久久久久影院薰衣草| 久久嫩草精品久久久精品一| 亚洲国产精品传媒在线观看| 久久综合久久综合九色| 亚洲精选在线| 美女国产一区| 欧美国产日韩视频| 国产一区二区三区自拍| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 久久精品中文字幕一区二区三区| 欧美专区中文字幕| 欧美日韩精品久久久| 亚洲一区二区三区高清| 一区二区三区日韩欧美| 国内揄拍国内精品少妇国语| 亚洲福利电影| 国产女人18毛片水18精品| 美女免费视频一区| 欧美日韩黄色一区二区| 久久国产精品电影| 欧美电影美腿模特1979在线看| 国产精品一二三| 亚洲免费观看在线观看| 夜夜嗨av一区二区三区网站四季av| 久久久久久香蕉网| 一区二区冒白浆视频| 亚洲第一成人在线| 国产精品任我爽爆在线播放| 美女视频一区免费观看| 国产精品s色| 国产精品第13页| 国语自产精品视频在线看一大j8| 欧美激情日韩| 免费在线观看日韩欧美| 亚洲性感美女99在线| 久久久久成人网| 亚洲网站啪啪| 欧美91大片| 久久亚洲综合色| 国产精品人人爽人人做我的可爱| 欧美mv日韩mv国产网站app| 国产精品青草久久| 亚洲乱码精品一二三四区日韩在线| 好吊色欧美一区二区三区四区| 一区二区三区蜜桃网| 99国产精品视频免费观看| 久久久久久亚洲精品中文字幕| 欧美一级在线视频| 久久综合精品国产一区二区三区| 欧美日韩精品欧美日韩精品| 欧美大片va欧美在线播放| 国产色视频一区| 亚洲一区二区三区四区五区黄| 亚洲免费黄色| 欧美大片免费看| 亚洲第一在线视频| 亚洲国产一区二区三区a毛片| 久久精品国产免费| 亚洲国产小视频| 久久精品欧美日韩精品| 久久精品综合网| 国内精品久久久久影院优| 小处雏高清一区二区三区| 亚洲第一偷拍| 欧美在线免费一级片| 欧美专区福利在线| 国产视频在线一区二区| 欧美一区二区免费视频| 亚洲激情电影中文字幕| 久久永久免费| 欧美激情按摩在线| 日韩视频免费看| 欧美日韩裸体免费视频| 欧美在线视频一区| 国产日产欧美精品| 久久精品在线免费观看| 麻豆精品视频| 国产精品国产一区二区| 99亚洲视频| 欧美一区二区三区四区在线观看地址| 久久婷婷久久| 亚洲性色视频| 99精品福利视频| 国产精品乱码人人做人人爱| 中文久久乱码一区二区| 国产一区二区三区四区| 久久伊人亚洲| 亚洲三级视频| 久久av在线看| 亚洲精品一二三区| 久久av二区| 亚洲国产成人在线视频| 亚洲一区二区三区四区五区午夜| 国产精品亚洲欧美| 麻豆精品视频在线| 一区二区三区 在线观看视频| 久久精品国产久精国产思思| 亚洲大胆美女视频| 欧美亚洲三区| 1024成人| 欧美视频在线观看| 欧美电影免费观看高清完整版| 欧美在线日韩精品| 亚洲免费视频一区二区| 欧美色播在线播放| 欧美午夜久久| 午夜日韩福利| 亚洲精品色婷婷福利天堂| 欧美与欧洲交xxxx免费观看 | 99亚洲伊人久久精品影院红桃| 久久精品视频在线| 一区二区成人精品 | 一本色道久久综合狠狠躁的推荐| 麻豆成人在线观看| 欧美在线3区| 亚洲在线一区| 欧美黑人一区二区三区| 亚洲愉拍自拍另类高清精品| 欧美激情一区二区三区| 久久精品国产亚洲高清剧情介绍| 亚洲少妇诱惑| 亚洲国产天堂久久国产91| 国产亚洲精品久久久久动| 欧美日韩一区二区高清| 欧美a级大片| 老牛嫩草一区二区三区日本 | 欧美成人午夜激情| 久久久久88色偷偷免费| 欧美一区二区网站|