TR NG Đ I H C CÔNG NGH THÔNG TINƯỜ
KHOA CÔNG NGH PH N M M
Seminar Subject: Data Storage in Android
Giáo viên h ng d n: Cáp Ph m Đình Thăng.ướ
Sinh viên th c hi n:
Nguy n Văn Sinh 105020130
Tôn Ng c T n 10520133
1 Gi i thi u v cách l u tr trên android: ư
Android cung c p cho b n m t s l a ch n đ l u tr d li u c a ng d ng m t cách r t ư
b n v ng. Các gi i pháp l u tr tùy thu c vào ph thu c vào s l a ch n c a b n và ư
ch ng trình c a b n đang phát tri n.ươ
Shared Storage: D li u c a b n s đ c l u tr d i d ng c p khóa-giá tr , ượ ư ướ
đây là cách l u tr truy n th ng trên di đ ng. Chúng ta mu n l u tr UI state, userư ư
preferences hay application setting thì đây là m t c ch g n nh đ l u tr . ơ ế ư
File: Android cho phép chúng ta t i và l u các t p tin trên thi t b di đ ng. ư ế
SQLite Databases: L u tr d li u d i d ng m t c u trúc mà b n xây d ngư ướ
s n trong m t c s d li u riêng. Cách này th ng đ c dùng nhi u trong android ơ ườ ượ
đ xây d ng các ng d ng ư
Network Connection: D li u s đ c chia s và l u tr trên web thông qua ượ ư
máy ch d li u c a b n.
Ngoài ra, android cung c p cho b n m t cách đ chia s các d li u cá nhân
c a ng d ng cho các ng d ng khác thông qua Content Provider. Chúng ta có th
truy c p Content Provider đ s d ng h th ng đ c phép. ượ
1.1 Shared Storage:
L p Shared Preferences cung c p m t khuôn kh chung cho phép b n l u tr ư l y c p
giá tr d i d ng key-value. B n có th s d ng Shared Preferences đ l u b t kì ki u dướ ư
li u m c đ nh nào: Booleans, floats, ints, longs ho c strings. D li u này s t n t i su t
phiên làm vi c c a ng i dùng (ngày c khi ng d ng c a b n có b đóng đi). ườ
u đi m:Ư
D li u l u tr ch dành riêng cho ng d ng mà nó đ c vi t ra. ư ượ ế
Đ c coi là m t ph n thông tin c a h th ng.ượ
Tính b o m t r t cao.
Nh c đi m:ượ
Không th l y thông tin d li u d i d ng file. ướ
Dung l ng b nh l u tr th p nên ch phù h p v i vi c l u tr thông tin c uượ ư ư
hình.
S d ng m t đ i t ng Editor đ l u d li u. Đ có đ c m t ượ ư ượ đ i
t ngượ SharedPreferences cho các ng d ng c a b n , hãy s d ng m t trong hai ph ngươ
th c:
getSharedPreferences (): S d ng nó n u b n c nế nhi u t p tin tham
chi uế đ cượ xác đ nh theo tên, mà b n ch đ nh v i tham s đ u tiên .
getPreferences () : S d ng đi u này n uế b n ch c n m t tham chi u đ nế ế
t p tin cho ho t đ ng c a b n . Vì có duy nh t mt t p tin tham chi u ế cho active
c a b n , b n không c n cung c p tên.
//ten cua SharedPreferences
private static final String CONFIGURATION_NAME = "NAME_CONFIG";
1.1.1 T o và l u giá tr vào SharePreferences: ư
Đ ghi giá tr vào trong b nh b n c n s d ng m t đ i t ng editor: ượ
G i m t editor thông qua SharedPreference.Editor.
Thêm các giá tr vào b nh đ m b ng các hàm putString(), putInt(),
putBoolean().
Đ y giá tr vào b nh b ng hàm editor.comit().
Code:
btSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//l y tên c a ng i dùng nh p trong EditText name. ườ
String name =
edtName.getEditableText().toString().trim();
//l y id c a ng i dùng nh p trong EditText id. ườ
String id =
edtID.getEditableText().toString().trim();
//t o m t đ i t ng SharedPreferences ch đ ượ ế
MODE_PRIVATE.
SharedPreferences editPreference =
getSharedPreferences(CONFIGURATION_NAME,
Activity.MODE_PRIVATE);
//lay doi tuong Editor dung de luu du lieu vao bo nho
Editor editor = editPreference.edit();
//day du lieu voi cap khoa-gia tri la id-name va bo nho phu
editor.putString(id, name);
//day du lieu tu bo nho phu vao bo nho thiet bi
editor.commit();
}
});
1.1.2 Truy xu t giá tr t SharePreferences:
Đ truy c p Shared Preferences thì cũng dùng ph ng th c getSharedPreferences, đ a ươ ư
vào khóa c a d li u trong SharedPreferences mà chúng ta mu n truy c p, dùng ph ng ươ
th c SharedPreferences.getString (),SharedPreferences.getInt(), …đ truy xu t giá tr c n
thi t.ế
Code:
btLoad.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//lay id ma nguoi dung nhap thong qua edtID de lay du lieu
ra
String id =
edtID.getEditableText().toString().trim();
//lay doi tuong SharedPreferences thong qua ten va che do
Activity.
SharedPreferences editPreference =
getSharedPreferences(CONFIGURATION_NAME,Activity.MODE_PRIVATE);
//lay du lieu voi 2 tham so la: id va gia tri xuat ra khi khong co
roi sau do set cho edtName
edtName.setText(editPreference.getString(id,CONFIGURATION_NAME));
}
});
Toàn b source code và demo n m trong th m c ư DemoSeminar/Seminar_Share
1.2 L u và đ c các t p tin trong android:ư
Cũng nh các tiêu chu n I/O c a java thì trong android cũng cung c p openFileInput vàư
openFileOutput đ đ n gi n các công vi c ghi và đ c trên các dòng ho c các file. ơ
u đi m:Ư
X lí trên file đ n gi n. ơ
Đ c file và l u tr file có th nhi u đ nh d ng. ư
Dung l ng file không gi i h n nh cách l u tr SharePreferencesượ ư ư
Nh c đi m:ượ
Không có tính b o m t cao.
Có th b l i khi xung đ t file ho c xung đ t lu ng đ c file.
Các l p ti n ích đ x lí file n m trong gói Android.os.Enviroment
Đ x lí các thao tác trên file đ c t t ta nên x d ng các l p n m trong gói java.os ượ
File: Thao tác x lí file.
FileInputStream: đ c n i dung file.
FileOutputStream:Ghi n i dung file.
1.2.1 Đ c file:
Mu n đ c m t file lên ta ph i dung l p FileInputStream đ m file và dùng l p
InputStreamReader đ m m t dòng đ c file.
Code:
private String readFile() throws IOException
{
//doc ten cua file tu edtFilePath
FILE_NAME = edtFilePath.getEditableText().toString().trim();
//mo mot file len de doc
FileInputStream ios = openFileInput(FILE_NAME);
//mot kenh truu tuong hoa dung de doc cac dinh dang dau vao
//trong truong hop nay la file
InputStreamReader isr= new InputStreamReader(ios);
//tao mot mang dung de doc du lieu nhan duoc tu file
char[] data = new char[1024];
//dung StringBuffer de nhan du lieu tu file ra
StringBuffer strBuffer = new StringBuffer();