Để 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.microedition.rms.RecordListener Method Description void recordAdded(RecordStore recordStore, int recordId)
Được gọi khi thêm 1 record void
recordChanged(RecordStore recordStore, int recordId)
Được gọi khi record bi thay đổi void
recordDeleted(RecordStore recordStore, int recordId)
Ví dụ : sử dụng 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 REC_STORE = "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 void pauseApp() {} 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.closeRecordStore(); } catch (Exception e) { db(e.toString()); } }
public void deleteRecStore() {
if (RecordStore.listRecordStores() != null) { try { RecordStore.deleteRecordStore(REC_STORE); } 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) {
} }
public void db(String 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) { System.err.println(e); } } }