偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

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

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

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

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

如何共享

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

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

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

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

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

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

參數(shù)如下:

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

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

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

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

◆recordStoreName是要打開的共享記錄存儲的名字

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

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

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

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

最后一個新方法如下:

  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指定記錄存儲的新的授權(quán)模式specifiesthenewauthorizationmodeofthe,

AUTHMODE_PRIVATE或者AUTHMODE_ANY.

writable指定存儲的信息可寫模式specifiesthestore'snewwritablemode.

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

總結(jié):

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

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

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

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

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

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

定義全局事件

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

◆定義一個ID變量

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

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

示例代碼如下

  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ā)布一個全局事件

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

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

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

對于事件接受者來說,需要考慮和實現(xiàn)的關(guān)鍵點(diǎn)如下

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

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

◆監(jiān)聽程序需要添加GlobalEventListener實例

示例代碼如下:

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

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

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

  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來應(yīng)用交互

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

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

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

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

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

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

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

這里是創(chuàng)建運(yù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)行時候存儲的代碼示例

  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é)任編輯:佚名 來源: BBturials
相關(guān)推薦

2011-05-04 09:29:22

2010-05-08 17:22:03

Black Berry

2010-05-22 16:57:09

BlackBerry開

2010-08-20 13:47:11

BlackBerry應(yīng)BlackBerry

2011-06-07 09:36:41

BlackBerry 應(yīng)用程序

2011-06-07 09:10:41

BlackBerry 開發(fā)

2009-07-09 09:46:24

激活Servlet

2019-01-29 07:06:57

2011-04-01 11:01:02

應(yīng)用程序BlackBerryJava

2011-04-18 11:00:34

使用音頻BlackBerry

2011-03-31 13:15:18

BlackBerry

2011-07-22 13:24:37

2012-01-09 09:22:37

BlackBerry

2011-05-05 10:58:13

應(yīng)用商店App StoreBlackBerry

2011-04-13 09:55:16

Mail APIBlackBerry

2011-04-13 13:38:57

選項APIBlackBerry

2013-03-22 17:34:07

BlackBerry1BB10黑莓

2011-04-15 16:05:00

監(jiān)聽UI對象的改變BlackBerry

2010-06-22 16:19:01

Black Berry

2010-09-10 08:32:45

android marApp CatalogApp Store
點(diǎn)贊
收藏

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