Để phát hiện các thay đổi cũng như thêm vào các Record trong RecordStore, RMS cung cấp giao diện RecordListener. Giao diện này định nghĩa 3 phương thức, các phương thức có 2 trị vào là một đối tượng kiểu RecordStore và một số int chứa recordID. Các phương thức đó là:
RecordListener Interface:
javax.microedrtiQn.rins.RecordListener
void
recordAdded(RecordStore recordStore, int recordId)
Duoc goi khi them 1 record
void
recordChanged(RecordStore recordStore, int recordId)
Duoc goi khi record bi thay doi
void
recordDeleted(RecordStore recordStore, int recordId)
Vi du : su dung RecordListener
/*---
* RmsListener.java * */
import java.io.*;
import javax.microedition.midlet.*; import
javax.microedition.rms.*; public class RmsListener extends MIDlet { private RecordStore rs = null; static final String RECSTORE = "db_8"; public
RmsListener() {
// Open record store and add listener openRecStore();
rs.addRecordListener(new TestRecordListener()); //Initiate actions that will wake up the listener
writeRecord("J2ME and MIDP"); updateRecord("MIDP and J2ME"); deleteRecord();
closeRecStore(); // Close record store deleteRecStore();
// Remove the record store }
public void destroyApp( boolean unconditional) {} public void startApp() {
// There is no user interface, go ahead and shutdown destroyApp(false);
notifyDestroyed();
}
public voidpauseApp() {} public void openRecStore() {
try {
// Create record store if it does not exist
rs = RecordStore.openRecordStore(REC_STORE, true);
}
catch (Exception e) { db(e.toString());
} } }
try { rs.closeRecordStoreQ; } catch (Exception e) { db(e.toString()); } }
public void deleteRecStore() {
if (RecordStore.listRecordStores() != null) { try {
RecordStore.deleteRecordStore(RECSTORE);
}
catch (Exception e) { db(e.toString());
} } } }
public void writeRecord(String str) { byte[] rec = str.getBytes(); try { rs.addRecord(rec, 0, rec.length); } catch (Exception e) { db(e.toString()); } }
public void updateRecord(String str) { try {
rs.setRecord(1, str.getBytes(), 0, str.length());
}
catch (Exception e) { db(e.toString());
} } }
public void deleteRecord() { try {
rs.deleteRecord(1);
}
catch (Exception e) { db(e.toString());
}
public void dbfString str) {
System.err.println("Msg: " + str); }
}
class TestRecordListener implements RecordListener {
public void recordAdded(RecordStore recordStore, int recordId) { try {
System.out.println("Record with ID#: " + recordId + "added to RecordStore: " + recordStore.getName()); } catch (Exception e) { System.err.println(e); } }
public void recordDeleted(RecordStore recordStore, int recordId) { try {
System.out.println("Record with ID#: " + recordId + "deleted from RecordStore: " + recordStore.getName()); } catch (Exception e) { System.err.println(e); } }
public void recordChanged(RecordStore recordStore, int recordId) { try{
System.out.println("Record with ID#: " + recordId + "changed in RecordStore: " recordStore.getName());
} catch (Exception e) { catch (Exception e) { System.err.println(e); } } }