在RecordStore中存储的数据是以字节的形势存在的,MIDP规范中并没有规定什么数据可以存储在RMS中,只要他可以转换成字节数组。那么读取和写入这些字节数据的时候我们应该注意些什么问题呢?由于非挥发性内存的存取速度都比较慢,因此我们应该尽量的少对RMS进行写操作,当然这也和设备有关系,有些设备的写操作是非常好费资源的。在读取数据的时候我们应该尽量复用对象,避免大量的创建对象然后丢弃对象,这样会给Heap和GC造成不小的负担。
看下面读取数据的两个不同的代码片断
//片断1
RecordStore rs = ....; // an open record store
try {
int lastID = rs.getNextRecordID();
byte[] data;
for( int i = 0; i < lastid; ++i ){
try {
data = rs.getrecord( i );
.... // do something with the data
}
catch( invalidrecordidexception e ){
continue;
}
}
}
catch( exception e ){
// error
}
//片断2
RecordStore rs = ....; // an open record store
try {
RecordEnumeration enum = rs.enumerateRecords(
null, null, false );
while( enum.hasNextElement() ){
byte[] data = enum.nextRecord();
.... // do something with the data
}
}
catch( Exception e ){
// error
}
上面的代码存在的问题是系统每次读取记录都要创建新的字节数组对象,这显然不够高效。其实我们可以对字节数组进行复用