Lập trình mobile - Phần 5
Chia sẻ bởi Nguyễn Bùi Minh Tâm |
Ngày 19/03/2024 |
12
Chia sẻ tài liệu: Lập trình mobile - Phần 5 thuộc Công nghệ thông tin
Nội dung tài liệu:
LẬP TRÌNH MOBILE
Hệ thống quản lý bản ghi (RMS)
11/20/2009
1
Võ Phương Bình – ITFAC - DLU
Hệ thống quản lý bản ghi (RMS)
Giới thiệu
Ghi và đọc
Duyệt bản ghi
Sắp xếp
Tìm kiếm
11/20/2009
Võ Phương Bình – ITFAC - DLU
2
Giới thiệu
RMS - Record Management System:
Là cơ chế để các ứng dụng MIDlet lưu trữ, truy xuất và thao tác dữ liệu trên thiết bị di động.
Dữ liệu sẽ được lưu trữ bền trên thiết bị ngay cả khi ứng dụng không còn thực thi.
Lớp bản ghi: RecordStore
javax.microedition.rms. RecordStore;
11/20/2009
Võ Phương Bình – ITFAC - DLU
3
Ghi và đọc
Khởi tạo:
RecordStore rs = RecordStore.openRecordStore(String filename, boolean createnew)
Ghi:
rs.addRecord(byte[] rec, int start, int length);
Đọc:
rs.getRecord(int index, byte[] recData, int offset);
11/20/2009
Võ Phương Bình – ITFAC - DLU
4
Ghi và đọc (2)
Các phương thức:
String[] listRecordStores();
int getNumRecords();
int getRecordSize(int index);
void closeRecordStore();
void deleteRecordStore(String filename);
11/20/2009
Võ Phương Bình – ITFAC - DLU
5
Ghi và đọc (3)
Sử dụng Stream:
ByteArrayOutputStream strmBytes;
DataOutputStream strmDataType = new DataOutputStream(strmBytes);
Ghi:
strmDataType.writeUTF(String sData);
strmDataType.writeBoolean(boolean bData);
strmDataType.writeInt(int iData);
Đọc:
strmDataType.readUTF();
strmDataType.readBoolean();
strmDataType.readInt();
11/20/2009
Võ Phương Bình – ITFAC - DLU
6
Duyệt bản ghi
Sử dụng bộ đếm bản ghi Enumerator.
Cho pho phép di chuyển đến trước và sau các bản ghi trong vùng bản ghi.
Điểm mạnh: Sắp xếp, Tìm kiếm.
Ví dụ:
RecordEnumeration re = rs.enumerateRecords(Filter, Compator, false);
while (re.hasNextElement())
{
String str = new String(re.nextRecord());
System.out.println(str);
}
11/20/2009
Võ Phương Bình – ITFAC - DLU
7
Sắp xếp
Thực thi giao diện RecordComparator.
Định nghĩa lại hàm so sánh compare:
class Comparator implements RecordComparator
{
public int compare(byte[] rec1, byte[] rec2)
{
String str1 = new String(rec1), str2 = new String(rec2);
int result = str1.compareTo(str2);
if (result == 0)
return RecordComparator.EQUIVALENT;
else if (result < 0)
return RecordComparator.PRECEDES;
else
return RecordComparator.FOLLOWS;
}
}
11/20/2009
Võ Phương Bình – ITFAC - DLU
8
Tìm kiếm
Ví dụ:
11/20/2009
Võ Phương Bình – ITFAC - DLU
9
Tìm kiếm (2)
Thực thi giao diện RecordFilter
class SearchFilter implements RecordFilter
{
private String searchText = null;
public SearchFilter(String searchText) {
this.searchText = searchText.toLowerCase();
}
public boolean matches(byte[] candidate) {
String str = new String(candidate).toLowerCase();
if (searchText != null && str.indexOf(searchText) != -1)
return true;
return false;
}
}
11/20/2009
Võ Phương Bình – ITFAC - DLU
10
Tìm kiếm (3)
Sử dụng lớp SearchFilter :
private void searchRecordStore()
{
if (rs.getNumRecords() > 0)
{
SearchFilter search = new SearchFilter(tfFind.getString());
RecordEnumeration re = rs.enumerateRecords(search, null, false);
if (re.numRecords() > 0)
siMatch.setText(new String(re.nextRecord()));
re.destroy();
}
}
}
11/20/2009
Võ Phương Bình – ITFAC - DLU
11
Hệ thống quản lý bản ghi (RMS)
11/20/2009
1
Võ Phương Bình – ITFAC - DLU
Hệ thống quản lý bản ghi (RMS)
Giới thiệu
Ghi và đọc
Duyệt bản ghi
Sắp xếp
Tìm kiếm
11/20/2009
Võ Phương Bình – ITFAC - DLU
2
Giới thiệu
RMS - Record Management System:
Là cơ chế để các ứng dụng MIDlet lưu trữ, truy xuất và thao tác dữ liệu trên thiết bị di động.
Dữ liệu sẽ được lưu trữ bền trên thiết bị ngay cả khi ứng dụng không còn thực thi.
Lớp bản ghi: RecordStore
javax.microedition.rms. RecordStore;
11/20/2009
Võ Phương Bình – ITFAC - DLU
3
Ghi và đọc
Khởi tạo:
RecordStore rs = RecordStore.openRecordStore(String filename, boolean createnew)
Ghi:
rs.addRecord(byte[] rec, int start, int length);
Đọc:
rs.getRecord(int index, byte[] recData, int offset);
11/20/2009
Võ Phương Bình – ITFAC - DLU
4
Ghi và đọc (2)
Các phương thức:
String[] listRecordStores();
int getNumRecords();
int getRecordSize(int index);
void closeRecordStore();
void deleteRecordStore(String filename);
11/20/2009
Võ Phương Bình – ITFAC - DLU
5
Ghi và đọc (3)
Sử dụng Stream:
ByteArrayOutputStream strmBytes;
DataOutputStream strmDataType = new DataOutputStream(strmBytes);
Ghi:
strmDataType.writeUTF(String sData);
strmDataType.writeBoolean(boolean bData);
strmDataType.writeInt(int iData);
Đọc:
strmDataType.readUTF();
strmDataType.readBoolean();
strmDataType.readInt();
11/20/2009
Võ Phương Bình – ITFAC - DLU
6
Duyệt bản ghi
Sử dụng bộ đếm bản ghi Enumerator.
Cho pho phép di chuyển đến trước và sau các bản ghi trong vùng bản ghi.
Điểm mạnh: Sắp xếp, Tìm kiếm.
Ví dụ:
RecordEnumeration re = rs.enumerateRecords(Filter, Compator, false);
while (re.hasNextElement())
{
String str = new String(re.nextRecord());
System.out.println(str);
}
11/20/2009
Võ Phương Bình – ITFAC - DLU
7
Sắp xếp
Thực thi giao diện RecordComparator.
Định nghĩa lại hàm so sánh compare:
class Comparator implements RecordComparator
{
public int compare(byte[] rec1, byte[] rec2)
{
String str1 = new String(rec1), str2 = new String(rec2);
int result = str1.compareTo(str2);
if (result == 0)
return RecordComparator.EQUIVALENT;
else if (result < 0)
return RecordComparator.PRECEDES;
else
return RecordComparator.FOLLOWS;
}
}
11/20/2009
Võ Phương Bình – ITFAC - DLU
8
Tìm kiếm
Ví dụ:
11/20/2009
Võ Phương Bình – ITFAC - DLU
9
Tìm kiếm (2)
Thực thi giao diện RecordFilter
class SearchFilter implements RecordFilter
{
private String searchText = null;
public SearchFilter(String searchText) {
this.searchText = searchText.toLowerCase();
}
public boolean matches(byte[] candidate) {
String str = new String(candidate).toLowerCase();
if (searchText != null && str.indexOf(searchText) != -1)
return true;
return false;
}
}
11/20/2009
Võ Phương Bình – ITFAC - DLU
10
Tìm kiếm (3)
Sử dụng lớp SearchFilter :
private void searchRecordStore()
{
if (rs.getNumRecords() > 0)
{
SearchFilter search = new SearchFilter(tfFind.getString());
RecordEnumeration re = rs.enumerateRecords(search, null, false);
if (re.numRecords() > 0)
siMatch.setText(new String(re.nextRecord()));
re.destroy();
}
}
}
11/20/2009
Võ Phương Bình – ITFAC - DLU
11
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Nguyễn Bùi Minh Tâm
Dung lượng: |
Lượt tài: 0
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)