麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

用J2ME MIDP開(kāi)發(fā)無(wú)線應(yīng)用程序

2019-11-17 06:28:21
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  J2ME(java 2 Micro Edition)的出現(xiàn)把Java開(kāi)發(fā)者徹底地引入了開(kāi)發(fā)無(wú)線設(shè)備應(yīng)用程序的廣闊天地。當(dāng)然,移動(dòng)設(shè)備因其功能和處理能力而多種多樣,但是,J2ME通過(guò)定義configurations和PRofiles而對(duì)這些差異性進(jìn)行了邏輯抽象,然后整合兩種設(shè)置為在特定移動(dòng)設(shè)備上開(kāi)發(fā)應(yīng)用程序提供了一套完整的平臺(tái)和API。

連接限制設(shè)備配置CLDC(Connected Limited Device Configuration)和移動(dòng)信息設(shè)備設(shè)置MIDP(Mobile Information Device Profile)一道支持目前在用的大多數(shù)主流移動(dòng)設(shè)備,比如PDA、手機(jī)和雙向?qū)ず魴C(jī)等。本文將通過(guò)J2ME構(gòu)建一個(gè)簡(jiǎn)單的示范應(yīng)用程序向讀者介紹其基本知識(shí)。
J2ME示例程序
實(shí)際構(gòu)建、安裝和運(yùn)行MIDP應(yīng)用程序的過(guò)程同標(biāo)準(zhǔn)Java應(yīng)用程序存在很大不同。為了“公平”起見(jiàn),這一問(wèn)題只能留待今后的文章對(duì)其進(jìn)行專門闡述了。現(xiàn)在我們就來(lái)了解了解示例程序的結(jié)構(gòu)。這個(gè)程序就是程序員剛?cè)腴T時(shí)幾乎都要遭遇的“Hello World!”應(yīng)用程序,在這里,程序名是HelloJ2ME,程序代碼見(jiàn)清單A。運(yùn)行HelloJ2ME程序后的顯示結(jié)果見(jiàn)圖A。

用J2ME MIDP開(kāi)發(fā)無(wú)線應(yīng)用程序(圖一)


我知道,這個(gè)程序非常簡(jiǎn)單,不過(guò)要作為一種講解新語(yǔ)言的入門示例也足夠了。正如你看到的那樣,HelloJ2ME擴(kuò)展了MIDP基本應(yīng)用程序MIDlet類并導(dǎo)入了兩個(gè)包名稱空間: javax.microedition.midlet和javax.microedition.lcdui。前者包括該應(yīng)用程序的MIDlet基類,而后者則提供了一組類似Swing的GUI元素供給用程序使用。

MIDlet類提供了三種抽象方法供設(shè)備的應(yīng)用程序治理器用來(lái)同其運(yùn)行的應(yīng)用程序通訊。只要應(yīng)用程序被激活、構(gòu)造器執(zhí)行完畢之后就會(huì)立即調(diào)用startApp方法而不是在應(yīng)用程序最初啟動(dòng)的時(shí)候這樣做。應(yīng)用程序在一次運(yùn)行的過(guò)程中會(huì)在活動(dòng)和不活動(dòng)狀態(tài)之間多次轉(zhuǎn)變,這樣你就不必編寫(xiě)單獨(dú)運(yùn)行的初始化代碼了,比如初始化用戶界面的代碼等,因?yàn)檫@類代碼很可能會(huì)執(zhí)行好多次。為此應(yīng)該采用構(gòu)造器來(lái)完成同一功能。

治理器指示應(yīng)用程序關(guān)閉之后就會(huì)調(diào)用destroyApp方法。和startApp方法不一樣的是該方法只在應(yīng)用程序生存期內(nèi)調(diào)用一次,所以在這個(gè)方法內(nèi)編寫(xiě)清除代碼是很安全的。實(shí)際上,由于MIDP并沒(méi)有為對(duì)象包括finalize函數(shù),所以你不得不在以上方法處執(zhí)行清除功能。同時(shí),由于典型的移動(dòng)設(shè)備比通常情況下的標(biāo)準(zhǔn)平臺(tái)欠缺穩(wěn)定,經(jīng)常被用戶進(jìn)行開(kāi)關(guān)機(jī)或者復(fù)位操作。所以你也不能真正指望destroyApp派上大用場(chǎng)。

最后的抽象方法就是pauseApp了。該方法主要作用是發(fā)出這樣的通知:因?yàn)橛脩艮D(zhuǎn)換到其他應(yīng)用或者采用了設(shè)備的某項(xiàng)功能促使應(yīng)用程序不能繼續(xù)運(yùn)行而暫時(shí)停止應(yīng)用程序的運(yùn)行。由于大多數(shù)移動(dòng)設(shè)備都缺乏執(zhí)行多任務(wù)的處理能力,以上的這類情況是完全可能發(fā)生的。所以在這個(gè)方法中應(yīng)該編碼釋放所有資源。一旦應(yīng)用程序重新開(kāi)發(fā)運(yùn)行則應(yīng)用程序治理器會(huì)再度調(diào)用startApp方法。

同應(yīng)用程序治理器的通訊

當(dāng)然,通訊必須是雙向有效的,MIDP應(yīng)用程序也不例外。MIDlet提供了一組方法供你用來(lái)同應(yīng)用程序治理器通訊:

NotifyDestroyed告訴治理器你的應(yīng)用程序要關(guān)閉了。調(diào)用該方法不會(huì)執(zhí)行destroyApp方法,所以你必須手工調(diào)用它。
NotifyPaused通知治理器你的應(yīng)用程序要暫停了。
ResumeRequest要求應(yīng)用程序治理器重啟暫停的應(yīng)用程序。
GetAppProperty從輸入或者應(yīng)用程序描述文件中獲取應(yīng)用程序的配置信息,這些將在以后討論。現(xiàn)在我們不妨認(rèn)為該方法就是訪問(wèn)專有的初始化文件。
治理界面
我剛才已經(jīng)提到過(guò), javax.microedition.lcdui包包含了MIDP應(yīng)用程序要采用的用戶界面元素。這個(gè)包里的大多數(shù)UI(用戶界面)元素同Swing的對(duì)等物非常相似,只是名字不同而已,其API后臺(tái)的事件系統(tǒng)在工作方式上也基本一樣。此外,同HelloJ2ME 程序的構(gòu)造器中代碼一樣,你應(yīng)該把事件偵聽(tīng)器對(duì)象注冊(cè)為控件。這樣,為簡(jiǎn)單起見(jiàn),HelloJ2ME即可實(shí)現(xiàn)自身的commandListener接口并為其包含的唯一Command對(duì)象起到偵聽(tīng)器的作用。不過(guò),創(chuàng)建偵聽(tīng)器類、匿名內(nèi)部類和專用類的其他技術(shù)也可以實(shí)現(xiàn)以上目標(biāo)。

GUI組件

lcdui包內(nèi)基本上定義了三組GUI組件,我是根據(jù)其基類對(duì)它們分組的,它們是Screen組件、Item組件和Miscellaneous Displayable組件。

Screen組件
Screen組件派生于Screen抽象類,其作用是提供傳統(tǒng)的、window風(fēng)格的GUI控件。HelloJ2ME程序所采用的Form對(duì)象就是Screen類的派生,其中包含和顯示GUI控件。其他Screen組件還包括Alert對(duì)話框和顯示多組選項(xiàng)的List以及容納多行條目的TextBox等。

Item組件
Item組件就是傳統(tǒng)的控件,比如“Hello World!”程序的TextField等,它們都派生于Item抽象類,后者提供了標(biāo)簽、事件處理和顯示控件的統(tǒng)一API。ChoiceGroup、 DateField、 Gauge、 ImageItem和StringItem則是其他類型的Item組件。

Miscellaneous Displayable 組件
Miscellaneous Displayable組件都派生于高級(jí)的Displayable抽象類或者具有同其相似的工作方式。該組組件有Command命令按鈕、顯示滾動(dòng)文本的Ticker以及顯示圖象的Graphics等,此外還包括操作預(yù)定義項(xiàng)的Choice界面等。以上這些組件無(wú)法歸于其他兩類,所以單獨(dú)組成一組歸類。

圖B所示就是這些組件的關(guān)系層次。

用J2ME MIDP開(kāi)發(fā)無(wú)線應(yīng)用程序(圖二)


以上的全體圖形控件都是由Display對(duì)象治理的,每一個(gè)應(yīng)用程序都會(huì)訪問(wèn)這一對(duì)象的單一、私有實(shí)例。該實(shí)例可以通過(guò)靜態(tài)的Display.getDisplay方法獲得,該方法通常會(huì)把指向該實(shí)例的引用保存在一個(gè)成員變量里,HelloJ2ME在其構(gòu)造器中就是這樣做的。除了為特定屏幕元素設(shè)置焦點(diǎn)(setCurrent)和獲取元素焦點(diǎn)的方法(getCurrent)之外,Display還暴露了一些用于獲得設(shè)備顯示能力信息的方法,比如是否顯示彩色的(isColor)和支持顯示色彩數(shù)量的(numColors)等方法。

小結(jié)
以上內(nèi)容是為移動(dòng)平臺(tái)開(kāi)發(fā)Java應(yīng)用程序的一些基礎(chǔ)知識(shí)。首先,你必須處理一個(gè)簡(jiǎn)單的類庫(kù):沒(méi)有反射、JNI也沒(méi)有我所提到的finalization支持。其次,你必須想法克服內(nèi)存的局限性,因?yàn)榇蠖鄶?shù)運(yùn)行MIDP profile的移動(dòng)設(shè)備可用的動(dòng)態(tài)內(nèi)存不會(huì)超過(guò)100K。這樣,你就需要非凡在意算法對(duì)內(nèi)存的利用率。最后,你還要清楚地熟悉到,任何網(wǎng)絡(luò)連接都會(huì)受到帶寬和環(huán)境的限制。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: av成人免费在线观看 | 一级大黄毛片 | 免费观看国产视频 | a黄网站 | 视频在线中文字幕 | 沉沦的校花奴性郑依婷c到失禁 | 中文欧美日韩 | 精品国产一区二区三区天美传媒 | 亚洲精品永久视频 | 真人一级毛片免费 | 一级免费特黄视频 | 国产午夜精品理论片a级探花 | 久草最新在线 | 四虎久草| 久久精品视频在线 | h色在线观看 | 成人毛片网站 | 九九热视频免费观看 | 黄色特级视频 | 姑娘第四集免费看视频 | 欧洲成人一区二区 | 一级一级一级一级毛片 | 三人弄娇妻高潮3p视频 | 国产成人高清在线 | 中日韩乱码一二新区 | 在线观看中文字幕国产 | 日韩一级片 | 操毛片 | 人人舔人人舔 | 亚州精品在线视频 | 欧美ab | 欧美日韩高清一区 | 国产色爱综合网 | 亚洲va久久久噜噜噜久久男同 | 欧美一区在线观看视频 | 欧美中文字幕一区二区 | 毛片视频网站在线观看 | 成人短视频在线播放 | h色网站在线观看 | 国产羞羞网站 | 久久精品污 |