探究J2ME記錄管理系統(tǒng)使用
本文向大家簡(jiǎn)單介紹一下談?wù)凧2ME的功能,重點(diǎn)討論一下持久數(shù)據(jù)和記錄管理系統(tǒng)的使用,MIDP提供在移動(dòng)設(shè)備上存儲(chǔ)持久數(shù)據(jù)的支持,并且MID簡(jiǎn)表還特意規(guī)定兼容的移動(dòng)設(shè)備必須提供至少8KB的非動(dòng)態(tài)內(nèi)存用于數(shù)據(jù)存儲(chǔ)的用途,實(shí)事上,大多數(shù)的MIDPJava設(shè)備提供的空間比這要求多得多。
持久數(shù)據(jù)和記錄管理系統(tǒng)(RecordManagementSystem,簡(jiǎn)稱RMS)
我在前面的文章中曾經(jīng)提到過(guò),MIDP提供在移動(dòng)設(shè)備上存儲(chǔ)持久數(shù)據(jù)的支持,并且MID簡(jiǎn)表還特意規(guī)定兼容的移動(dòng)設(shè)備必須提供至少8KB的非動(dòng)態(tài)內(nèi)存用于數(shù)據(jù)存儲(chǔ)的用途,實(shí)事上,大多數(shù)的MIDPJava設(shè)備提供的空間比這要求多得多。這就允許一個(gè)midlet充份利用應(yīng)用程序的持久數(shù)據(jù)。對(duì)于有Java2標(biāo)準(zhǔn)版開(kāi)發(fā)經(jīng)驗(yàn)的開(kāi)發(fā)者,應(yīng)該注意這種數(shù)據(jù)存儲(chǔ)能力與標(biāo)準(zhǔn)的Java有區(qū)別。J2ME記錄管理系統(tǒng)(RMS)允許數(shù)據(jù)流被儲(chǔ)存并且在一個(gè)記錄基礎(chǔ)上訪問(wèn)數(shù)據(jù)。由應(yīng)用程序開(kāi)發(fā)者把每個(gè)記錄解析到字段水平。RMS程序包內(nèi)部的接口支持一個(gè)應(yīng)用程序定義的基礎(chǔ)上的比較與檢索功能。
一、javax.microedition.rms程序包
通過(guò)javax.microedition.rms包訪問(wèn)J2ME記錄管理系統(tǒng),這個(gè)包包括一個(gè)類,RecordStore,和好幾個(gè)有用的接口(在下列表格中描述):
這些接口對(duì)于實(shí)現(xiàn)自定義搜索和檢索功能很有用,這些接口中使用的最多的就是RecordEnumeration。這個(gè)接口從RecordStore.enumerateRecords()方法調(diào)用中返回并且被用于遍歷一組從記錄存儲(chǔ)器中返回的記錄。它包含nextRecord()、previousRecord()、numRecords()和hasNextElement()等方法。
二、使用RecordStore類訪問(wèn)記錄存儲(chǔ)
RecordStore類是開(kāi)發(fā)者開(kāi)發(fā)基層RMS的接口,記錄儲(chǔ)存是在一個(gè)平臺(tái)--midlet環(huán)境依賴的方式--上創(chuàng)建的。信息的實(shí)際的位置和存儲(chǔ)細(xì)節(jié)應(yīng)用程序開(kāi)發(fā)者其實(shí)并不知道,記錄存儲(chǔ)可以使用一種簡(jiǎn)單的命名規(guī)則來(lái)訪問(wèn):名稱最多可以到32個(gè)Unicode字符長(zhǎng)度,區(qū)分大小寫和必須在一個(gè)midlet套件內(nèi)唯一。在一個(gè)midlet套件內(nèi)的所有midlet都有讀/寫一個(gè)記錄存儲(chǔ)的權(quán)限,只要它們知道正確的名稱。一旦這個(gè)midlet套件被從該設(shè)備上刪除,所有與這個(gè)套件關(guān)聯(lián)的記錄存儲(chǔ)也將被刪除。
比如說(shuō),為了打開(kāi)一個(gè)名為TestRecordSet的記錄存儲(chǔ),你可以調(diào)用RecordStore.openRecordStore()方法。這個(gè)方法使用兩個(gè)參數(shù):一個(gè)字符串,表示記錄存儲(chǔ)的名稱;一個(gè)布爾值,如果為真的話,就會(huì)在紀(jì)錄存儲(chǔ)不存在時(shí)創(chuàng)建一個(gè)。我們使下列方法調(diào)用創(chuàng)建新的TestRecordSet記錄存儲(chǔ):
- RecordStorers=null;
- rs=RecordStore.openRecordStore("TestRecordSet",true);
記錄存儲(chǔ)被創(chuàng)建好后,我們可以通過(guò)調(diào)用RecordStore.addRecord()方法來(lái)向這個(gè)記錄存儲(chǔ)添加數(shù)據(jù)。addRecord()接受三個(gè)參數(shù):
一旦成功完成addRecord()調(diào)用,這個(gè)方法就返回一個(gè)整數(shù)指定這個(gè)記錄在記錄存儲(chǔ)中的標(biāo)識(shí)號(hào)。RecordStore還規(guī)定另外一個(gè)數(shù)據(jù)編輯方法,包括setRecord()和deleteRecord(),但是我在例子中不會(huì)使用它們。
在MID簡(jiǎn)表中包含網(wǎng)絡(luò)功能是有前瞻性的,使J2ME成為未來(lái)無(wú)線電應(yīng)用開(kāi)發(fā)的領(lǐng)導(dǎo)。這個(gè)功能將是人工智能技術(shù)的基礎(chǔ),使J2ME成為未來(lái)技術(shù)的基石(例如,你可以使用HTTPConnection接口和XML分析器構(gòu)造一個(gè)WML瀏覽器)。事實(shí)上,象kXML這樣的XML分析器將允許J2ME客戶端支持SOAP、XML-RPC和其他基于XML的分布技術(shù)。
【編輯推薦】
- 探討J2ME/J2EE的JSON數(shù)據(jù)交換方式
- 深入了解J2ME Polish+Eclipse配置過(guò)程
- 剖析J2ME 3D編程的第一個(gè)3D程序
- Eclipse中進(jìn)行JVM內(nèi)存設(shè)置
- 解析Linux下如何用eclipse搭建J2ME開(kāi)發(fā)環(huán)境