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).

主站蜘蛛池模板: 亚洲成a人片| 91小视频在线| 国产欧美日韩va另类在线播放| AV无码国产在线看岛国岛| 国产啪在线91| 国产自在线播放| 制服丝袜国产精品| 久久精品91麻豆| 国产一级裸网站| 自拍中文字幕| 亚洲国产成人久久精品软件| 男女男免费视频网站国产| 天天干天天色综合网| 中文字幕日韩欧美| 久久久久久久久久国产精品| AV熟女乱| 最新亚洲人成无码网站欣赏网| av大片在线无码免费| 尤物精品视频一区二区三区| 国内精品视频在线| 在线国产毛片手机小视频 | 91po国产在线精品免费观看| 国产麻豆aⅴ精品无码| 久久香蕉国产线| 精品久久久久久久久久久| 40岁成熟女人牲交片免费| 亚洲国产欧美自拍| 精品免费在线视频| 91在线国内在线播放老师| 欧美在线综合视频| 婷婷午夜影院| 性网站在线观看| 日韩东京热无码人妻| 中国一级毛片免费观看| 欧美乱妇高清无乱码免费| 一个色综合久久| 四虎永久免费在线| 一本色道久久88| 69国产精品视频免费| 国产精品999在线| 99久久无色码中文字幕| 亚瑟天堂久久一区二区影院| 综合五月天网| 岛国精品一区免费视频在线观看| 伊人欧美在线| 欧美97欧美综合色伦图| 亚洲男人在线| 日韩无码视频专区| 夜夜高潮夜夜爽国产伦精品| 综合色天天| 日韩欧美综合在线制服| 亚洲综合婷婷激情| 国产欧美精品专区一区二区| 国产熟睡乱子伦视频网站| 亚州AV秘 一区二区三区| 在线精品视频成人网| 国产成人精品在线1区| 国产波多野结衣中文在线播放| 国产在线麻豆波多野结衣| 99精品视频在线观看免费播放| 国产SUV精品一区二区| 超碰aⅴ人人做人人爽欧美| 国产日韩欧美视频| 波多野结衣亚洲一区| 日韩高清欧美| 曰AV在线无码| 欧美精品在线看| 日韩国产另类| 精品福利一区二区免费视频| 亚洲综合精品香蕉久久网| lhav亚洲精品| 欧洲成人免费视频| 亚洲婷婷在线视频| 亚洲av无码片一区二区三区| 久久大香香蕉国产免费网站| 日韩精品毛片人妻AV不卡| av午夜福利一片免费看| 成年片色大黄全免费网站久久| 朝桐光一区二区| 无套av在线| 亚洲色图欧美| 男女男精品视频|