XtGem Forum catalog
Cộng đồng Java Việt
Cộng đồng java Việt
Thông báo
Chú ý: Sắp tới ADM sẽ cải tiến lại wap, xây dựng thêm mục C, C ++ cho các bạn, các bạn có ý kiến gì thì góp ý cho AD nhá :D
Codej2me xin gửi lời cảm ơn đến: Holyeyed, Java_Editor!, chuonghugo,TVC97, thaian2009, gió(opakul), ironman..., và đặc biệt là forum j2mevn đã giúp Codej2me xây dựng wapsite này!!!
Có nhiều bạn chưa hiểu kĩ về Canvas nha, muốn chạy 1 app nào đó có Canvas thì phải Có Midlet nhá, tìm hiểu tại đây
Chatbox




Một số thông tin về RMS
Record Management System (RMS)
- MIDP không sử dụng hệ thống file để lưu trữ dữ liệu. Thay vào đó MIDP lưu toàn bộ thông tin vào non-volatile memory (dung lượng vùng nhớ) bằng hệ thống lưu trữ gọi là Record Management System (RMS).
- RMS là hệ thống được tổ chức và quản lý dưới dạng các record (bản ghi). Mỗi bản ghi có thể chứa bất kỳ loại dữ liệu nào:kiểu số nguyên, chuỗi ký tự, một ảnh và kết quả của một Record là một chuỗi (mảng) các byte. Nếu bạn mã hoá dữ liệu của bạn dưới dạng nhị phân (binary), bạn có thể lưu trữ dữ liệu bằng Record sau đó đọc dữ liệu từ Record và khôi phục lại dữ liệu ban đầu. Kích thước dữ liệu không được vuợt quá giới hạn qui định của thiết bị di động. RMS lưu dữ liệu gần như một cơ sở dữ liệu, bao gồm nhiều dòng, mỗi dòng lại có một số định danh duy nhất.
- Một tập các bản ghi(RecordStore) là tập hợp các Record được sắp xếp có thứ tự. Mỗi Record không thể đứng độc lập mà nó phải thuộc vào một RecordStore nào đó, các thao tác trên Record phải thông qua RecordStore chứa nó. Khi tạo ra một Record trong RecordStore, Record được gán một số định danh kiểu số nguyên gọi là Record ID. Record đầu tiên được tạo ra sẽ được gán Record ID là 1,sẽ tăng thêm 1 cho các Record tiếp theo. Record ID không là chỉ mục (index), các thao tác xóa Record trong RecordStore sẽ không tính toán lại các Record ID của các Record hiện có cũng không thay đổi Record ID của các Record được tạo mới, ví dụ: xóa record id 3, thêm một record mới sẽ có id là 4. Data là một dãy các byte đại diện cho dữ liệu cần lưu.
Tên được dung để phân biệt các RecordStore trong bộ các MIDlet (MIDlet suite). MIDlet suite là tập các MIDlet có chung không gian tên (name space), chia sẻ cùng tài nguyên (như RecordStore), các biến tĩnh (static variable) trong các lớp và các MIDlet này sẽ được đóng gói trong cùng một file khi triển khai. Nếu ứng dụng của bạn chỉ có một MIDlet thì các RecordStore được sử dụng cũng phân biệt lẫn nhau bằng các tên. Tên của RecordStore có thể dài đến 32 ký tự Unicode và là duy nhất trong một MIDlet suite.
Các vấn đề liên quan đến RMS
- Hạn chế về khả năng lưu trữ của thiết bị di động : Dung lượng vùng nhớ (non-volatile memory) dành riêng cho việc lưu trữ dữ liệu trong RMS thay đổi tùy theo thiết bị di động. Đặc tả MIDP yêu cầu rằng các nhà sản xuất thiết bị di động phải dành ra vùng nhớ có kích thước ít nhất 8K cho việc lưu trữ dữ liệu trong RMS. Đặc tả không nêu giới hạn trên cho mỗi Record. RMS cung cấp các API để xác định kích thước của mỗi Record, tổng dung lượng của RecordStore và kích thước còn lại của vùng nhớ này. Do đó trong quá trình phát triển các ứng dụng J2ME bạn phải cân nhắc trong việc sử dụng vùng nhớ này.
- Tốc độ truy xuất dữ liệu :Các thao tác trên vùng nhớ này sẽ chậm hơn nhiều khi truy xuất dữ liệu trên bộ nhớ RAM. Giống như tốc độ đọc ổ cứng và tốc độ đọc từ RAM của máy tính. Trong kỹ thuật lập trình phải thường xuyên cache dữ liệu và các thao tác liên quan đến RMS chỉ thực hiện tập trung một lần (lúc khởi động hay đóng ứng dụng).
- Cơ chế luồng an toàn :Nếu RecordStore chỉ được sử dụng bởi một MIDlet, không phải lo lắng vì RMS sẽ dành riêng một Thread để thực hiện các thao tác trên RecordStore. Tuy nhiên nếu có nhiều MIDlet và Thread cùng chia sẻ một RecordStore thì phải chú ý đến kỹ thuật lập trình Thread để đảm bảo không có sự xung đột dữ liệu
Một số thao tác trên recordstore như sau:
Recordstore rs=RecordStore.openRecordStore(“tên”,true);//mở recordstore, true :sẽ tạo mới nếu chưa tồn tại
int rs.addRecord(byte[],offset,length byte)// thêm một record mới
void rs.setRocord(ID,byte[],offset,length byte) // tương tự add record nhưng chỉ định sẵn ID (đã tồn tại)
byte[] dt=rs.getRecord(ID) //trả về giá trị bytearray
Có thể chuyển sang string
String s=new String(dt,0,dt.length); // chuyển giá trị bytearray thành chuỗi
Hoặc:
int getRecord(ID,buffer,offset) // chuyển giá trị vào một buffer và trả về số byte của record. Một buffer có thể là một byte array hoặc là được tạo ra bằng lệnh:
StringBuffer sb=new StringBuffer();
void deleteRecord(ID); // xóa record
Sau khi sử dụng xong recordStore thì nên đóng nó lại để tiết kiệm bộ nhớ
void rs.closeRecordStore();
void deleteRecordStrore(tên record);// xóa record
Thông tin
Hiện có 1 đang Online, 1 visit trong ngày,2 visit trong tháng. Tổng lượt truy cập là 433 lượt.
Liên Hệ - Hổ Trợ
Info Author Admin: Q.Phiên
Phone Author Phone: 01635514395
Hosting By XTGEM.COM
CodeJ2ME© 2014-2015