日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
J2ME對(duì)話框選擇功能實(shí)現(xiàn)原理

這里向大家描述一下J2ME如何實(shí)現(xiàn)對(duì)話框選擇功能,在手機(jī)這么小的屏幕上開(kāi)發(fā)使用,難點(diǎn)之一就是頻繁的屏幕切換。盡管midp2.0的UI部分已經(jīng)很豐富了,但這些UI部件都是基于事件回調(diào)的。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、成都微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了淇縣免費(fèi)建站歡迎大家使用!

J2ME實(shí)現(xiàn)對(duì)話框選擇功能

在手機(jī)這么小的屏幕上開(kāi)發(fā)使用,難點(diǎn)之一就是頻繁的屏幕切換。盡管midp2.0的UI部分已經(jīng)很豐富了,但這些UI部件都是基于事件回調(diào)的。這在處理大量的、基本的問(wèn)答式交互時(shí)顯得力不從心。

本文實(shí)現(xiàn)了一個(gè)阻塞當(dāng)前線程的對(duì)話框,簡(jiǎn)要地說(shuō),你可以運(yùn)用諸如win32API中dialog函數(shù)那樣的方式來(lái)實(shí)現(xiàn)對(duì)話框并阻塞等待返回值,然后根據(jù)返回值執(zhí)行不同的處理。

疑問(wèn)何在?

首先回顧一下midpUI的事件處理機(jī)制。有兩個(gè)要素:

1)首先UI部分由系統(tǒng)的一個(gè)線程負(fù)責(zé)維護(hù)。也就是說(shuō)不能阻塞系統(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的類的代碼片斷:

 
 
 
 
  1. Formf=newForm("Helloworld");  
  2. f.addCommand(exit);  
  3. f.setCommandListener(this); 

可以想象基于事件回調(diào)的處理方式,在處理大量的、基本的問(wèn)答式交互時(shí)顯得力不從心。你不得不為每一個(gè)僅僅是詢問(wèn)要不要繼續(xù)的對(duì)話框而實(shí)現(xiàn)一個(gè)又一個(gè)類,或者處理一個(gè)復(fù)雜的回調(diào)函數(shù)。如果選擇后者,那么在一個(gè)又一個(gè)的if-else中處理不同邏輯事件的代碼片斷一定會(huì)煩死你。

較好的做法

這時(shí)候我們不免懷念一下win32Api中對(duì)話框函數(shù)的處理方式:

 
 
 
 
  1. intchoose=Dialog(title,type……);  
  2. if(choose==OK){……}  
  3. elseif(choose==Cancel){……} 

這樣處理將會(huì)阻塞當(dāng)前線程,等待返回值,然后根據(jù)返回值執(zhí)行處理。這樣做很cool的原由就是在一個(gè)邏輯性很完整的任務(wù)中,你可以一次性在一個(gè)回調(diào)要領(lǐng)中完成所有邏輯,而不必為了問(wèn)詢基本的YES/NO疑問(wèn)而在不同的類中間跳來(lái)跳去。

如何在MIDP下實(shí)現(xiàn)

我們遇到的***個(gè)疑問(wèn)來(lái)自于我們的要領(lǐng)必須要阻塞當(dāng)前線程等待返回值。也就是說(shuō),這個(gè)對(duì)話框不能在UI的回調(diào)中直接運(yùn)行,比如commandAction中。處理辦法是將所有的事件處理都放到一個(gè)線程類中處理。(這是一點(diǎn)額外的負(fù)擔(dān),但不可防止)。還好這個(gè)工作量不大,要想實(shí)現(xiàn)兩個(gè)對(duì)象之間的通信也不難。

第二個(gè)疑問(wèn)是如何阻塞當(dāng)前的線程,我們祭出Java線程的三板斧之wait()/notifyAll()。我們可以指定一個(gè)信號(hào)量(初值false),當(dāng)其為false時(shí)阻塞當(dāng)前線程,在得到用戶通知后將信號(hào)量改為true,并喚醒線程。

下面看一下主要思路


網(wǎng)頁(yè)名稱:J2ME對(duì)話框選擇功能實(shí)現(xiàn)原理
標(biāo)題網(wǎng)址:http://www.dlmjj.cn/article/dhsdghj.html