Để 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 RecordStorevà một số intchứa recordID. Các phương thức đó là:
Ví dụ 8: sử dụng RecordListener
/*--------------------------------------------------
* RmsListener.java
*
* Test the RMS listener methods
*
* No GUI interface, all output is to the console
*-------------------------------------------------*/
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());
}
}
public void closeRecStore()
{
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)
{
db(e.toString());
}
}
/*--------------------------------------------------
* Simple message to console for debug/errors
* When used with Exceptions we should handle the
* error in a more appropriate manner.
*-------------------------------------------------*/
public void db(String str)
{
System.err.println("Msg: " + str);
}
}
/*--------------------------------------------------
* Listen for updates to the record store
*-------------------------------------------------*/
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);
}
}
}
Output: