Android #1: Shared Preferences là gì?

Shared Preferences là một interface mà Android cung cấp để truy xuất các dữ liệu cơ bản (bao gồm string, integer, long, float, boolean). Dữ liệu sẽ được lưu dưới dạng key-value, do đó trong một instance (Một Shared Preferences sẽ có nhiều instance, mỗi instance sẽ có nhiều key-value), một key chỉ lưu trữ một value duy nhất.

Shared Preferences thường được dùng để lưu trữ những dữ liệu đơn giản. Giả sử như ứng dụng của bạn có phần cài đặt Settings, bạn có thể sử dụng SP để lưu trữ dữ liệu mà người dùng đã setting. Hoặc lưu trữ điểm cao nhất của một trò chơi,...


Cấu trúc của Shared Preferences

Với mỗi thao tác, dữ liệu sẽ được đưa vào in-memory (RAM) trước khi đưa vào bộ nhớ (disk-storage).
Dữ liệu khi đưa vào in-memory bản chất là một HashMap có dạng map = HashMap<Key, Value>, sau đó được lưu trong disk-storage với cấu trúc của một file xml:
<map>
      <string name="key">value</string>
</map>

Ghi dữ liệu vào một instance trong Shared Preferences

Trước tiên, ta cần tạo khai báo một instance với cú pháp:
SharedPreferences pref = getSharedPreferences("my_data", MODE_PRIVATE);
Đoạn code sẽ tạo một intance có tên là my_data, instance sẽ tự động được tạo nếu vẫn chưa tồn tại trong bộ nhớ.

Để có thể ghi dữ liệu, ta khai báo một Editor với cú pháp:
SharedPreferences.Editor editor = pref.edit();
Sau đó sử dụng các phương thức put để đưa dữ liệu vào editor:
editor.putString("myString", "DuongTech.com");
editor.putInt("myInt", 1);
editor.putFloat("myFloat", 3.14f);
editor.putLong("myLong", 314159265);
editor.putBoolean("myBool", false);
Cuối cùng, chúng ta xác nhận dữ liệu đã được ghi bằng phương thức commit() hoặc apply():
editor.commit();
hoặc
editor.apply();

commit()apply() khác nhau như thế nào?

commit() sẽ xác nhận dữ liệu một cách đồng bộ, do đó main thread của bạn sẽ bị "đơ" cho đến khi việc ghi dữ liệu vào disk-storage hoàn thành.

apply() sẽ xác nhận dữ liệu một cách bất đồng bộ, do đó main thread sẽ không bị block trong quá trình ghi dữ liệu vào disk-storage.

Nhìn chung thì apply() sẽ hiệu quả hơn commit(), nhưng commit() có thể trả về kết quả nếu việc ghi dữ liệu vào disk-storage có thành công hay không, còn apply() thì không thể.

Sau khi lưu dữ liệu, bạn hoàn toàn có thể tìm thấy file xml được tạo ra trong thư mục "shared_prefs":
data/data/<APP_ID>/shared_prefs/<SHARED_PREFS_NAME>.xml

Lấy dữ liệu từ một instance trong Shared Preferences

Thực hiện dòng lệnh sau để lấy dữ liệu từ instance my_data với key là "myString":
String str = pref.getString("myString", "owltek.blogspot.com");
// result: DuongTech.com
Trong đó parameter thứ 2 là giá trị mặc định nếu không tìm thấy key đó trong instance.

Kết

Trong bài viết đầu tiên của loạt series về Android cơ bản, chúng ta đã có cái nhìn tổng thể Shared Preferences và cách sử dụng nó. Bài viết sau mình sẽ giới thiệu về Intent trong Android.

Tham khảo thêm

Thanh Dương

Android #1: Shared Preferences là gì? Android #1: Shared Preferences là gì? Reviewed by Duong-Tran Thanh on 8/22/2019 03:26:00 SA Rating: 5

Không có bình luận nào!

Được tạo bởi Blogger.
BACK TO TOP