自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

BlackBerry應(yīng)用和MIDlet之間的交互

移動(dòng)開(kāi)發(fā)
本文我們將介紹《BlackBerry應(yīng)用和MIDlet之間的交互》,對(duì)于很多沒(méi)有BlackBerry應(yīng)用經(jīng)驗(yàn)的開(kāi)發(fā)者,或者對(duì)于很多現(xiàn)有的Java ME的系統(tǒng),如果以最小的代價(jià)和BlackBerry應(yīng)用交互,或者和BlackBerry應(yīng)用集成,這是一個(gè)很好的方法。同時(shí),這也是對(duì)老的Java ME應(yīng)用和BlackBerry的新應(yīng)用遷移和同步數(shù)據(jù)的一個(gè)好辦法。

在前文中我們給大家介紹了如何將MIDlet應(yīng)用移植到BlackBerry,本文我們將介紹《BlackBerry應(yīng)用和MIDlet之間的交互》。

用RMS在MIDlet和BlackBerry之間共享數(shù)據(jù)

對(duì)于很多沒(méi)有BlackBerry應(yīng)用經(jīng)驗(yàn)的開(kāi)發(fā)者,或者對(duì)于很多現(xiàn)有的Java ME的系統(tǒng),如果以最小的代價(jià)和BlackBerry應(yīng)用交互,或者和BlackBerry應(yīng)用集成,這是一個(gè)很好的方法。同時(shí),這也是對(duì)老的Java ME應(yīng)用和BlackBerry的新應(yīng)用遷移和同步數(shù)據(jù)的一個(gè)好辦法。既然BlackBerry開(kāi)發(fā)對(duì)Java ME提供支持,所以RMS可以被用來(lái)作為這種解決的首選。

原來(lái)的MIDP規(guī)范定義了持久的,基于記錄的存儲(chǔ)功能叫記錄管理存儲(chǔ)(RMS)。一個(gè)MIDlet套件可以使用RMS創(chuàng)建一個(gè)或多個(gè)記錄存儲(chǔ),每個(gè)由一個(gè)獨(dú)一無(wú)二的名字標(biāo)識(shí)。在javax.microedition.rms包中可以找到必要的類和接口。Record Store提供了打開(kāi),關(guān)閉,讀取,寫(xiě)入和更新操作,也提供方法刪除單個(gè)記錄或者整個(gè)存儲(chǔ)。這個(gè)包包含接口來(lái)列舉,排序和篩選RMS內(nèi)容。

在MIDP1.0時(shí)候,每個(gè)RMS存儲(chǔ)只屬于創(chuàng)建它的MIDlet套件。MIDP2.0規(guī)范給RMS包增加了一個(gè)非常有用的能力:它允許一個(gè)MIDlet套件和另一個(gè)MIDlet套件共享記錄存儲(chǔ)。

如何共享

共享一個(gè)RMS記錄存儲(chǔ)需要兩個(gè)或者多個(gè)參與者:一個(gè)擁有者和一個(gè)或者多個(gè)消費(fèi)者。擁有者負(fù)責(zé)創(chuàng)建和命名存儲(chǔ)和建立授權(quán)模式-共享或者不共享-和它的訪問(wèn)模式-可寫(xiě)或者不可寫(xiě)。消費(fèi)者通過(guò)名字獲得記錄存儲(chǔ)的訪問(wèn)。消費(fèi)者不能訪問(wèn)沒(méi)有共享的存儲(chǔ),也不能修改不可寫(xiě)的存儲(chǔ)。一個(gè)共享的RMS被一個(gè)三元組標(biāo)識(shí)(提供者名字,MIDlet套件名字,記錄存儲(chǔ)名字):

◆提供者名字是JAD或者manifest文件里面的MIDlet-Vendor屬性的值。

◆MIDlet套件名字是JAD文件里面MIDlet-name字段的值

◆記錄存儲(chǔ)名字是一個(gè)1到32位長(zhǎng)的區(qū)分大小寫(xiě)的Unicode字符串,是當(dāng)你創(chuàng)建記錄存儲(chǔ)時(shí)候用的名字。

要支持共享,MIDP2.0標(biāo)準(zhǔn)在javax.microedition.rms中添加了兩個(gè)字段和三個(gè)方法第一個(gè)新方法打開(kāi)一個(gè)已經(jīng)存在的記錄存儲(chǔ),或者創(chuàng)建一個(gè)新的記錄存儲(chǔ)并設(shè)置它的授權(quán)和可寫(xiě)特性。

  1. static Record Store  
  2.  
  3. Open Record Store(Stringrecord Store Name,booleancreate,intauthmode,booleanwritable);  

參數(shù)如下:

record Store Name設(shè)置記錄存儲(chǔ)的名字sets th ename of there cord store.create,如果為true,創(chuàng)建并不存在的存儲(chǔ).

authmode指定授權(quán)模式specifies the authorization mode:Record Store.AUTHMODE_PRIVATE阻止共享or Record Store.AUTHMODE_ANY允許共享.如果存儲(chǔ)已經(jīng)存在這個(gè)參數(shù)會(huì)被忽略.

writeable,如果為true,指定其他MIDlet套件可以修改這個(gè)記錄存儲(chǔ).如果存儲(chǔ)已經(jīng)存在這個(gè)參數(shù)會(huì)被忽略.

消費(fèi)者打開(kāi)一個(gè)共享的記錄存儲(chǔ)的方法如下:這里:

◆recordStoreName是要打開(kāi)的共享記錄存儲(chǔ)的名字

◆vendorName是擁有者M(jìn)IDlet套件的MIDlet-Vendor屬性的值

◆suiteName是擁有者M(jìn)IDlet套件的名字

僅當(dāng)記錄存儲(chǔ)的擁有者設(shè)置了automode為AUTHMODE_ANY時(shí)這個(gè)方法才能成功打開(kāi)記錄存儲(chǔ)。需要注意的是你不能直接檢測(cè)存儲(chǔ)的可寫(xiě)屬性。要發(fā)現(xiàn)一個(gè)記錄存儲(chǔ)是否可寫(xiě)的唯一方法是試著向記錄存儲(chǔ)寫(xiě)入,如果不可寫(xiě)就捕獲相應(yīng)的異常。

記住在JAD或者manifestMIDlet-Version,并不在參數(shù)列表中。這意味著擁有者套件無(wú)法在影響消費(fèi)者的前提下改變共享的存儲(chǔ)的記錄格式。

最后一個(gè)新方法如下:

  1. vo id  
  2.  
  3. s et Mo d e ( in t au th m o d e, b oo le an w rit ab le ) ;  

這里:

authmode指定記錄存儲(chǔ)的新的授權(quán)模式specifiesthenewauthorizationmodeofthe,

AUTHMODE_PRIVATE或者AUTHMODE_ANY.

writable指定存儲(chǔ)的信息可寫(xiě)模式specifiesthestore'snewwritablemode.

只有擁有者M(jìn)IDlet套件才能改變authmode和writable屬性.沒(méi)有方法能夠用來(lái)查詢這些設(shè)置

總結(jié):

在原有老的MIDlet應(yīng)用中創(chuàng)建使用了RMS之后,在BlackBerry中直接打開(kāi)就可以操作了,反過(guò)來(lái)也是。

使用全局事件來(lái)進(jìn)行應(yīng)用交互

BlackBerry平臺(tái)提供了事件模型,用來(lái)在不同的應(yīng)用之間通信,在使用事件模型的時(shí)候需要注意如下事項(xiàng):

◆任何應(yīng)用程序都可以發(fā)布或者監(jiān)聽(tīng)全局事件

◆通過(guò)響應(yīng)全局事件可以在一個(gè)應(yīng)用程序中執(zhí)行一些本來(lái)應(yīng)該在另一個(gè)應(yīng)用中出現(xiàn)的動(dòng)作

◆通過(guò)發(fā)送全局事件也可以在應(yīng)用程序之間傳遞數(shù)據(jù)

定義全局事件

對(duì)于全局事件的定義,BlackBerry有自己的定義規(guī)范:

◆定義一個(gè)ID變量

◆把ID變量定義為靜態(tài)的,從而使得其他的類也可以引用到

◆通對(duì)包名做HASH產(chǎn)生ID,使ID變得獨(dú)一無(wú)二

示例代碼如下

  1. class Glo b al Ev entFi ring Ap p e xt end s UiApp li catio n {  
  2.  
  3. / / ID w il l be hash o f pac kage na m e  
  4.  
  5. pub li c stati c lo n g GLOB AL_ID = 0 xba4b 8 4 9 4 4 bb 74 29 e L ;  

發(fā)布一個(gè)全局事件

通過(guò)把事件ID傳遞到postGlobalEvent()方法中,我們可以發(fā)布一個(gè)全局事件

BlackBerry提供了有四種不同的方法來(lái)發(fā)布發(fā)布一個(gè)事件示例代碼如下

  1. / / p o st t h e gl o b al ev en fr o m y o u r app li cati o n aft er s o m et h in g  
  2.  
  3. / / m eaning fu l ha s happ e n ed  
  4.  
  5. App li ca tio n M an ag er.g et App li catio n M an ag e r()  
  6.  
  7. .p o stGl o b alEv ent(G L OBAL_ ID) ;  
  8.  
  9. / /o r a po st p assin g o the r in fo r m ati o n  
  10.  
  11. App li ca tio n M an ag er.g et App li catio n m an ag er()  
  12.  
  13. .p o stG o lb alEv ent(G L OBAL_ ID,data0 ,d ata1 ,o b j ect 0 ,o b j ect 1 );  

對(duì)于事件接受者來(lái)說(shuō),需要考慮和實(shí)現(xiàn)的關(guān)鍵點(diǎn)如下

◆全局監(jiān)聽(tīng)?wèi)?yīng)用程序必須要是一個(gè)自動(dòng)啟動(dòng)應(yīng)用程序

◆監(jiān)聽(tīng)程序需要有類能夠?qū)崿F(xiàn)一個(gè)GlobalEventListener接口

◆監(jiān)聽(tīng)程序需要添加GlobalEventListener實(shí)例

示例代碼如下:

  1. class Gl o b alEv entL is te n erA p p e xt end s UiApp li catio n i m p le m ents Glob alE ve n tL i ste n e r {  
  2.  
  3. …  
  4.  
  5. pub li c Glob alEv entL i ste n er App () {  
  6.  
  7. add Glob alE v en tL ist ener(t h is);  

對(duì)于GlobalEventListener接口,來(lái)說(shuō)應(yīng)用需要注意的是,必須要實(shí)現(xiàn)具體事件影響的方法,示例代碼如下:

GlobalEventListener接口只有一個(gè)必須要實(shí)現(xiàn)的方法不管事件怎么發(fā)布的,這個(gè)方法都是一樣的

  1. // thi s m et h o d is ex ecu te d when a gl o b al e v ent has be en po st ed pub li c vo id ev entOc cur ed(l o n g gu id , int data 0 , int da t 1 ,  
  2.  
  3. Object o b je ct0 , Ob je ct o b je ct1 ) {  
  4.  
  5. / / che ck the I D o f t h e po st in g app  
  6.  
  7. if (gu id = = Gl o b alE v entFi ri ng App .GLOBAL_ ID ) {  
  8.  
  9. / / d o som et h in g m eaning fu l here  
  10.  
  11. / / v ari ab les that w ere passed in can b e u sed d epen d in g  
  12.  
  13. / /o n w h at po st o ccurr e d . O ther wise the v alu e will be nu ll  
  14.  
  15. }  
  16.  
  17. }  

使用RUNTIMEStore來(lái)應(yīng)用交互

相對(duì)于靜態(tài)的RMS的繁瑣配置和不靈活,BlackBerry提供的運(yùn)行時(shí)存儲(chǔ)(runtimestore)非常靈活和方便,它在平臺(tái)即被提供了如下功能。

◆運(yùn)行時(shí)存儲(chǔ)提供一個(gè)中間區(qū)域讓不用應(yīng)用可以共享對(duì)象

◆通過(guò)數(shù)字簽名的任何應(yīng)用程序都可以訪問(wèn)運(yùn)行時(shí)存儲(chǔ)

對(duì)于運(yùn)行時(shí)存儲(chǔ)–存儲(chǔ)數(shù)據(jù)的使用需要注意的是:

◆對(duì)象可以添加到運(yùn)行時(shí)存儲(chǔ)或者從運(yùn)行時(shí)存儲(chǔ)中替換掉

◆運(yùn)行時(shí)存儲(chǔ)必須以一個(gè)獨(dú)一無(wú)二的ID創(chuàng)建

◆任何類型的對(duì)象都可以放到運(yùn)行時(shí)存儲(chǔ)中

這里是創(chuàng)建運(yùn)行時(shí)存儲(chǔ)和寫(xiě)入簡(jiǎn)單數(shù)據(jù)的代碼示例

  1. class Crea te St o re D e m o e xt end s UiApp li catio n {  
  2.  
  3. / / cr eate t h e ID bas ed o n p ackage na m e  
  4.  
  5. pub li c sta tic l o n g STOR E_I D = 0 x 23 ad 2 3 4 8 9 a 2 4 3 L ;  
  6.  
  7. pub li c Crea te St o re D e m o ( ) {  
  8.  
  9. Strin g m sg = “ Sh ared te xt f o r ano ther app li ca tio n ” ; Run ti m eSt o re st o re = R un tim eSt o re.g e tRun ti m eSt o re() ; try {  
  10.  
  11. st o re.pu t(ST ORE_ I D , m sg );  
  12.  
  13. } ca tch (E xce p tio n ex ) {}  
  14.  
  15. }  
  16.  
  17. }  

創(chuàng)建好了以后,這里就是讀取運(yùn)行時(shí)候存儲(chǔ)的代碼示例

  1. class Re ad Sto r eD em o ex te nd s UiApp li catio n {  
  2.  
  3. pub li c ReadS t o r eD em o () {  
  4.  
  5. Run ti m eSt o re st o re = R un tim eSt o re.g e tRun ti m eSt o re() ;  
  6.  
  7. try {  
  8.  
  9. / / cast t h e return ed o b ject to a st rin g  
  10.  
  11. S trin g m sg = ( S tring )st o re.g et (Crea te St o re D e m o . STORE_ I D ) ;  
  12.  
  13. } ca tch (E xce p tio n ex ) {  
  14.  
  15. / / h and le e xce p ti o n  
  16.  
  17. }  
  18.  
  19. }  
  20.  
  21. }  

 

責(zé)任編輯:佚名 來(lái)源: BBturials
相關(guān)推薦

2011-05-04 09:29:22

2010-05-08 17:22:03

Black Berry

2010-05-22 16:57:09

BlackBerry開(kāi)

2010-08-20 13:47:11

BlackBerry應(yīng)BlackBerry

2019-01-29 07:06:57

2009-07-09 09:46:24

激活Servlet

2011-06-07 09:36:41

BlackBerry 應(yīng)用程序

2011-06-07 09:10:41

BlackBerry 開(kāi)發(fā)

2011-04-18 11:00:34

使用音頻BlackBerry

2011-04-01 11:01:02

應(yīng)用程序BlackBerryJava

2011-03-31 13:15:18

BlackBerry

2021-10-07 23:29:47

前端應(yīng)用交互流

2011-07-22 13:24:37

2013-12-08 22:02:24

手勢(shì)交互交互設(shè)計(jì)交互體驗(yàn)

2012-01-09 09:22:37

BlackBerry

2011-04-15 16:05:00

監(jiān)聽(tīng)UI對(duì)象的改變BlackBerry

2011-05-05 10:58:13

應(yīng)用商店App StoreBlackBerry

2011-04-13 13:38:57

選項(xiàng)APIBlackBerry

2013-03-22 17:34:07

BlackBerry1BB10黑莓

2011-04-13 09:55:16

Mail APIBlackBerry
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)