Notification of Changes with RecordListener

Để 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: