Symbian啟動過程

來源:互聯網
上載者:User

原文地址

http://www.cnmsdn.com/html/201008/1281528816ID7199.html

Symbian啟動過程

 

symbian的程式都是基於symbian架構的,我們在IDE中建立一個項目,就會自動產生幾個類。除了應用程式本身,還有application、ui、document、view四個類。後面的四個類都繼承於已有的架構類:CAknApplication、CAknAppUi、CCoeControl和CAknDocument。這些類在設計架構的時候都已經寫好,只是有幾個方法還沒有實現。程式啟動後架構會自己運行,但是運行過程中它還缺少一些方法的實現,而這些方法的實現就交由程式員來完成了。可以這麼說,如果我們在架構的基礎上開發程式,雖然能提供一些便利,但是總要受制於架構,說白了就是給架構打工。以上只是個人的一點淺見。

  現在說說上面提到的四個類吧,這些都是架構的類。symbian架構是基於MVC的(不基於MVC的貌似還沒見過),CAknDocument對應的是Model,CCoeControl對應的是View,CAknAppUi就是Controller了。當讓這些都是通用的類,我們要實現自己的程式,就要寫自己的類,從頭開始寫當然太麻煩了,從這些類繼承,覆蓋一些函數,然後就OK。原來編程這麼簡單啊,是的,因為架構的編寫者已經為我們寫了幾萬行代碼了,從而減少了我們的負擔。

  看看Symbian架構主要類的階層吧。

  像很多架構一樣,通過多層次的繼承,使架構的可擴充性更強。具體的細節就不多說了,確實很複雜。如果做一般的應用,也沒有必要對架構瞭解十分透徹。

  上面羅嗦了一頓架構,其實是為下文講程式啟動過程打下伏筆。我們現在以最簡單的helloworldbasic為例(sdk中的範例程式碼),講一下symbian程式的啟動過程。

  C語言中,程式的入口總是在main()處。然而在symbian開發中,我們卻看不到main(),很顯然它已經是架構的一部分了。但是架構還是為我們留出了一個介面:E32Main(),架構在一開始的時候就會掉用這個函數。這個函數直接return EikStart::RunApplication( NewApplication );它就又調用了NewApplication(),NewApplication這個函數直接建立了 CHelloWorldBasicApplication的對象,就是應用程式的對象。至此,程式已經完成啟動。不對,還有UI類、View類、 Model類,它們怎麼都沒說啊,難道是打醬油去了?其實在new CHelloWorldBasicApplication的時候,這些類也被建立了,並預設執行了一些方法,只是我們感覺不到而已。

  下面這張時序圖相形能說明一些問題。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.