999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于BREW平臺的多態機制實現

2010-01-01 00:00:00陳秀寓
軟件工程 2010年3期

摘要:BREW技術是在移動數據增值應用開發領域中出現的一種新技術,開發主要是應用的C語言,但手機開發中的大量問題都與C++中實現的多態效果十分相似,如果可以利用C語言這種非面向對象的語言寫出面向對象的程序,將有利于提高程序的重用性、模塊化功能以及健壯性。本論文主要圍繞著BREW平臺應用開發中一個常見應用:頁面遷移技術為例,給出了多態機制在BREW平臺下的解決方案,該方案均是在BREW手機實際開發中總結出來,具有很大的可重用性。

關鍵詞:BREW;多態機制;頁面遷移

1引言

如今,手機已不僅是語音通信的工具,而且逐步成為數據業務開發與應用的平臺,隨著科學技術的不斷更新和發展,如今手機已不僅僅是滿足打電話的功能,而是更多地成為人們在工作、學習和生活中的助手。在這種情況下CDMA手機產生了一種新的應用平臺,也就是由美國高通公司研發出的BREW平臺。BREW技術的出現使手機猶如普通電腦一樣能夠運行更多的第三方軟件,為用戶提供更多的服務。

BREW的技術優勢在于基于c語言進行的,平臺開發對于許多程序員來講均十分熟悉,移動設備制造商無需再開發專有的軟件平臺,可降低移動設備技術門檻及產品上市門檻,滿足終端用戶對最新數據應用的需求。本文主要圍繞著在BREW平臺下,如何利用C語言這種非面向對象的語言寫出面向對象的程序展開論述,并以手機應用開發中一個常見的應用—頁面遷移技術為例,對其解決方案進行了詳細的介紹和對比,該方案均是在BREW手機實際開發中總結出來,具有很大的可重用性。

2 BREW平臺簡介及應用軟件發展現狀

2.1 BREW平臺簡介

BREW的全稱是Binary Runtime Environment for Wireless,即無線二進制運行環境。從基本的層面而言,BREW平臺就是手持設備上嵌入式芯片操作系統的接口或抽象層。即是PC環境下Microsoft Windows的Win32 API。BREW平臺是一組用于本地執行、編譯并鏈接的二進制庫,優化后能使應用程序利用無線服務和資源。它控制流出或流入應用程序的事件流,能根據相應的事件啟動、停止、中止或恢復應用程序,其執行環境在運行時可以發現應用程序和任何相關的擴展。

據聯通博路通信技術有限公司2009年3月9日《BREW業務整體介紹》,到2008年底,國內支持BREW的手機機型已經超過251種,200多家中國BREW開發商提供了2479多種基于BREW的應用。

2.2 手機應用軟件發展現狀

據市場研究公司Strategy Analytics預測,盡管由于經濟危機的影響,2009年全球手機銷量雖會有所下降,但仍可達到10.8億部,銷售額會穩定在1900億歐元,甚至會有微弱增長。可以預見,隨著未來全球經濟的復蘇,全球手機市場的前景仍很樂觀。而且隨著嵌入式技術的快速發展及國內3G網絡的建立,因此未來基于BREW的手機應用軟件需求巨大。

2 BREW平臺中的多態

隨著手機業務的不斷發展,手機的軟件系統也成為一個非常龐大、復雜的軟件系統,這樣一個復雜的體系結構,應該保證能夠及時響應用戶和一些緊急事件。此時,要想使BREW平臺開發的手機游戲具有更大的優勢,選擇一種好的實現機制至關重要。

BREW平臺支持C和C++開發語言,但是一般的BREW應用程序都是用C寫的,而對于C++的使用,BREW平臺則需要做更多的事情,比如定義符重載等。而C語言是不支持面向對象的,只有C++支持面向對象的程序設計,因此BREW中必須使用C語言模擬實現C++語言面向對象機制。而面向對象技術中的關鍵技術多態是基于以上的內存模型和函數指針實現的,一般來說,如果使用類C語言描述多態,它相當于增加了一個間接層,在這個間接層攔截對于方法的調用,然后根據具體的指針指向實際對象調用相應的方法實現。

以下就以BREW中的頁面遷移的方案為例進行詳細的論述。

3 BREW平臺中的頁面遷移

對于一個手機的應用軟件,要隨時注意手機的按鍵變化,在每一個狀態下的每一次乃至每一個手機按鍵的變化,都將會出現不同的界面和效果。這就是所說的BREW平臺下的頁面遷移,在該過程中手機畫面不停變換,而手機的鍵盤只有一個,這時,應用程序如何判斷該具體執行何種操作,就成為BREW平臺上應用程序開發中一個重要的問題。

使用手機的經驗告訴我們,手機頁面需要頻繁的進行遷移時,實現頁面遷移的方案和其效率的高低對于內存很小的手機來說都是至關重要的。

3.1 基本BREW頁面遷移方案

對于一個BREW開發的頁面遷移的程序,基本的解決反感就是可以自行設置一組宏分別代表頁面的不同狀態,每個狀態再對應一個BREW的事件處理過程,在每個事件處理中,通過對按鍵的判斷來調用不同的應用函數,如頁面的新建、打開、重畫、刪除、和鍵盤事件的相應函數,調用后再進行頁面的遷移。BREW可以利用這種調用的機制,實現通過按鍵完成函數和函數之間不斷的調用過程。

該類方案的具體處理過程在手機處理按鍵的caseEVT_KEY中:根據不同的頁面的宏標識ID執行不同頁面的handleevent事件函數。

例如:

//根據不同的窗口,調用不同文件中的事件處理程序

switch(pMe->activeView) {//判斷當前的活動頁面

case IDW_GAME://如果是游戲頁面,則執行游戲頁面對應的事件處理程序

return GameWnd_HandleEvent(pMe->game, eCode, wParam, dwParam);

case IDW_MAINMENU: //如果是主頁面,則執行主頁面對應的事件處理程序

return MainMenuWnd_HandleEvent(pMe->mainMenu, eCode, wParam, dwParam);

……

default:break ;

}

該種方案的特點是較為利于理解,但是使用時容易出錯,不宜調試。

3.2 類多態的BREW頁面遷移方案

經過上述分析可以看出,手機中的頁面遷移問題與C++中實現的多態效果十分相似,也就是完成一個窗體接口類的實現, 該接口類能完成繪制屏幕和接收客戶鍵盤輸入的功能,對于客戶的相同輸入, 不同的窗體結構應該能體現出不同的行為。如果可以利用C語言這種非面向對象的語言寫出面向對象的程序,將有利于提高程序的重用性、模塊化功能以及健壯性。

BREW平臺中的宏QINTERFACE,GET_PVTBL,DECLARE_VTBL可以用來完成這種效果。其本質就是在基類的層次上定義一個“空函數集”,通過該空函數集實現一個抽象的,虛擬的,通用的接口層,可以在運行時根據對象的實際類型動態地調用派生類的那些“具體”函數,簡言之,就是同一個接口函數,根據具體的對象,調用具體的函數。

使用時首先通過Qinterface定義了一個包含VTBL(虛函數表)的接口,在運行時,根據具體傳入的對象類型調用了具體派生接口的“具體”函數。如:#define IWINDOW_Enable(p)GET_PVTBL(p, IWindow)->Enable(p, TRUE)這里p是IWINDOW指針類型。用戶調用IWINDOW_Enable(p)時,雖然此時傳入的是IWINDOW類型指針,但是其實質是派生的具體接口類型,所以最終調用到的就是屬于它(派生具體接口)的具體接口函數了。

以下代碼用于完成一個滿足上述要求的頁面遷移過程。

typedef struct _IWindowIWindow;

QINTERFACE(IWindow)

{

void (*Enable)(IWindow * po, boolean bEnable);

void (*Redraw)(IWindow * po);

boolean(*HandleEvent)(IWindow * po, AEEEvent eCode, uint16 wParam, uint32 dwParam);

……

};

#define IWINDOW_Enable(p) GET_PVTBL(p, IWindow)->Enable(p, TRUE)

#define IWINDOW_Redraw(p) GET_PVTBL(p, IWindow)->Redraw(p)

#define IWINDOW_HandleEvent(p, e, w, dw) GET_PVTBL(p, IWindow)->HandleEvent(p, e, w, dw)

……

#define INHERIT_CWindow(iname)

DECLARE_VTBL(iname)

IShell * m_pIShell;

IDisplay * m_pIDisplay;

struct CWindow

{

INHERIT_CWindow(IWindow);

};

具體實現的功能如圖1所示:

上述代碼實現了一個結構體CWindow,其中包含三個成員,一個是指向函數表結構體類型的指針vtIWindow,另兩個是普通成員指針。要通過指針vtIWindow訪問函數的話,則只需要創建對應接口的函數表的實例,把接口實例的對應的函數表保存起來,然后用修改過的函數表結構體替換到接口之中,當調用對應的接口函數的時候, 就具有了特殊定義的行為。

通過上述工作,已經得到了一個窗體的基接口類,在其基礎上可以派生自己的接口類來構造不同的窗體。并在派生接口類窗體中增加自己的數據成員,也可以增加接口行為,這樣,就可以構造出負責各種功能的窗體來滿足移動應用的需要。如圖2所示。

4 結束語

文中針對手機開發的具體問題提出相應的解決方案,該方案均是在BREW手機實際開發中總結出來的。這些方法和框架代碼具有很大的可重用性,很好的解決了在BREW手機開發中頻繁出現的頁面遷移問題,有一定現實意義。

參考文獻

[1]唐際宇,楊永田,王驥.BREW平臺內部接口機制的探討[J].航空電子技術, 2006(3).

主站蜘蛛池模板: 日韩欧美国产综合| 亚洲一区波多野结衣二区三区| Jizz国产色系免费| 国产精品丝袜视频| 国产精品人成在线播放| 国产成人区在线观看视频| 99视频在线免费观看| 国产国产人成免费视频77777| 3D动漫精品啪啪一区二区下载| 久久精品66| 日本午夜网站| 国产亚洲男人的天堂在线观看| 国产精品美女在线| 中文精品久久久久国产网址| vvvv98国产成人综合青青| 91精品专区| 国产福利免费在线观看| 国产精品第三页在线看| 丁香六月激情婷婷| 国产女人在线视频| 国产在线专区| 国内毛片视频| 国产专区综合另类日韩一区| 国产精品久久自在自线观看| 一区二区三区毛片无码| 麻豆精选在线| 久久99精品久久久久久不卡| 国产欧美一区二区三区视频在线观看| 亚洲午夜福利精品无码不卡| 久996视频精品免费观看| 很黄的网站在线观看| 无码 在线 在线| 亚洲三级电影在线播放 | 亚洲精品无码成人片在线观看| 天天摸夜夜操| 2018日日摸夜夜添狠狠躁| 婷婷久久综合九色综合88| 国产青青操| 91最新精品视频发布页| 午夜性刺激在线观看免费| 国产欧美日韩综合在线第一| 日韩不卡高清视频| 日韩一级二级三级| 国产精品午夜福利麻豆| 午夜老司机永久免费看片| 成人字幕网视频在线观看| 日本欧美午夜| 中文字幕欧美日韩| 欧美国产在线精品17p| 亚洲色图另类| 99国产精品一区二区| 久久频这里精品99香蕉久网址| 国产精品毛片一区视频播| 伊人久久婷婷| 91视频精品| 中日韩一区二区三区中文免费视频 | 亚洲日韩精品伊甸| 久久9966精品国产免费| 正在播放久久| 国产午夜无码片在线观看网站 | 欧美在线网| 波多野结衣国产精品| 国产裸舞福利在线视频合集| 国产精品嫩草影院av| 国内熟女少妇一线天| 毛片免费在线视频| 71pao成人国产永久免费视频 | 亚洲欧美成人综合| 99热这里只有精品在线观看| 国产精品密蕾丝视频| 青青国产成人免费精品视频| 欧美色综合网站| 色综合综合网| 精品少妇人妻无码久久| 国产福利影院在线观看| 国产极品美女在线观看| 欧美日韩福利| 久久96热在精品国产高清| 亚洲一区二区三区中文字幕5566| 亚洲美女高潮久久久久久久| 91黄视频在线观看| 中文无码毛片又爽又刺激|