這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)J2ME中怎么實(shí)現(xiàn)對(duì)話框選擇功能,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
主要從事網(wǎng)頁設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、成都響應(yīng)式網(wǎng)站建設(shè)、程序開發(fā)、微網(wǎng)站、小程序設(shè)計(jì)等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們?cè)诨ヂ?lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)絡(luò)營銷經(jīng)驗(yàn),集策劃、開發(fā)、設(shè)計(jì)、營銷、管理等多方位專業(yè)化運(yùn)作于一體,具備承接不同規(guī)模與類型的建設(shè)項(xiàng)目的能力。
J2ME實(shí)現(xiàn)對(duì)話框選擇功能
在手機(jī)這么小的屏幕上開發(fā)使用,難點(diǎn)之一就是頻繁的屏幕切換。盡管midp2.0的UI部分已經(jīng)很豐富了,但這些UI部件都是基于事件回調(diào)的。這在處理大量的、基本的問答式交互時(shí)顯得力不從心。
本文實(shí)現(xiàn)了一個(gè)阻塞當(dāng)前線程的對(duì)話框,簡要地說,你可以運(yùn)用諸如win32API中dialog函數(shù)那樣的方式來實(shí)現(xiàn)對(duì)話框并阻塞等待返回值,然后根據(jù)返回值執(zhí)行不同的處理。
疑問何在?
首先回顧一下midpUI的事件處理機(jī)制。有兩個(gè)要素:
1)首先UI部分由系統(tǒng)的一個(gè)線程負(fù)責(zé)維護(hù)。也就是說不能阻塞系統(tǒng)的事件處理要領(lǐng)。
2)事件處理運(yùn)用的是一種回調(diào)機(jī)制。首先UI部件運(yùn)用諸如setCommandListener之類的要領(lǐng)為自己注冊(cè)一個(gè)回調(diào)接口(其中的回調(diào)要領(lǐng)由用戶實(shí)現(xiàn));等到觸發(fā)了相應(yīng)事件就調(diào)用這個(gè)注冊(cè)好的接口的回調(diào)要領(lǐng)。
以下是一個(gè)實(shí)現(xiàn)了CommandListener的類的代碼片斷:
Formf=newForm("Helloworld"); f.addCommand(exit); f.setCommandListener(this);
可以想象基于事件回調(diào)的處理方式,在處理大量的、基本的問答式交互時(shí)顯得力不從心。你不得不為每一個(gè)僅僅是詢問要不要繼續(xù)的對(duì)話框而實(shí)現(xiàn)一個(gè)又一個(gè)類,或者處理一個(gè)復(fù)雜的回調(diào)函數(shù)。如果選擇后者,那么在一個(gè)又一個(gè)的if-else中處理不同邏輯事件的代碼片斷一定會(huì)煩死你。
較好的做法
這時(shí)候我們不免懷念一下win32Api中對(duì)話框函數(shù)的處理方式:
intchoose=Dialog(title,type……); if(choose==OK){……} elseif(choose==Cancel){……}
這樣處理將會(huì)阻塞當(dāng)前線程,等待返回值,然后根據(jù)返回值執(zhí)行處理。這樣做很cool的原由就是在一個(gè)邏輯性很完整的任務(wù)中,你可以一次性在一個(gè)回調(diào)要領(lǐng)中完成所有邏輯,而不必為了問詢基本的YES/NO疑問而在不同的類中間跳來跳去。
如何在MIDP下實(shí)現(xiàn)
我們遇到的***個(gè)疑問來自于我們的要領(lǐng)必須要阻塞當(dāng)前線程等待返回值。也就是說,這個(gè)對(duì)話框不能在UI的回調(diào)中直接運(yùn)行,比如commandAction中。處理辦法是將所有的事件處理都放到一個(gè)線程類中處理。(這是一點(diǎn)額外的負(fù)擔(dān),但不可防止)。還好這個(gè)工作量不大,要想實(shí)現(xiàn)兩個(gè)對(duì)象之間的通信也不難。
第二個(gè)疑問是如何阻塞當(dāng)前的線程,我們祭出Java線程的三板斧之wait()/notifyAll()。我們可以指定一個(gè)信號(hào)量(初值false),當(dāng)其為false時(shí)阻塞當(dāng)前線程,在得到用戶通知后將信號(hào)量改為true,并喚醒線程。
下面看一下主要思路
上述就是小編為大家分享的J2ME中怎么實(shí)現(xiàn)對(duì)話框選擇功能了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁名稱:J2ME中怎么實(shí)現(xiàn)對(duì)話框選擇功能
瀏覽路徑:http://chinadenli.net/article2/gojsic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、用戶體驗(yàn)、網(wǎng)站策劃、App設(shè)計(jì)、面包屑導(dǎo)航、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)