先前版本的ExpensesApp除了有内存使用的问题外,还有一些数据同步的问题。你可以从上次的文章里回忆起这些,但是我已经在下面把它们列出来了,毕竟离现在已经有些日子了:
使用RMS的记录变更通知系统就可以很容易地解决这些数据同步的问题,这个通知系统是集成在RecordListener接口中的。让我们来仔细看看这个接口。
现在Expenses主类实现了一个新的接口,RecordListener。这个接口提供了应用程序记录仓变化的通知。RecondListener接口有三个方法,这三个方法都接受代表记录仓和受影响记录的ID号的自变量。
将一个正在执行的类传递到RecordStore的方法addRecordListener,你就能建立一个RecordListener。正如你所预料到的,多个RecordListeners可以被加入到单个的RecordStore中去。
ExpensesApp在本质上使用同样的方法处理这些侦听事件中的每一件,你可以在Listing C看到。添加和删除事件处理程序清除lsMain列表的内容,然后重建expenseItems数组,最后从暂存区里取出数据重建lsMain,以反映出变化。变更事件处理器则相反,只是简单的重建expenseItems数组,因为一条更新过的记录不会影响显示在lsMain里的项目。同时因为我并不关心事件发生之外的其他任何事,所以我就不用对每次事件所收到的RecordStore和ID号自变量做任何事。
除了能为保持MIDlet和本地数据仓同步提供一个简单的方法外,RecordListener API在处理能够独立地从远程数据库完成更新的应用程序时,就便显出了自己的作用。我将在探索J2ME系列的最后一部分里向你展示,这是如何通过普通连接网络完成的。
欢迎评论或投稿
用户评论