LƯU TRỮ DỮ LIỆU TRÊN THIẾT BỊ VỚI ANDROID SHAREDPREFERENCES

Shared Preferences là chỗ bạn có thể tàng trữ các công bố bên dưới dạng key-value được xây đắp sẵn trong hệ quản lý Android.

Bạn đang xem: Lưu trữ dữ liệu trên thiết bị với android sharedpreferences

Đoạn code tiếp sau đây vẫn mang một instance của shared preferences cùng với tên truyền vào. instance đó có thể được áp dụng trong phạm vi tổng thể ứng dụng bất kể đâu nó được đem về.

val pref = getSharedPreferences("PREF", MODE_PRIVATE)

*
Nhận lấy shared preference instance mang tên là "PREF"

Mỗi một shared preferences sẽ sở hữu được instance riêng dựa vào tên của preference.

val pref2 = getSharedPreferences("PREF2", MODE_PRIVATE)pref cùng pref2 là 2 instance khác nhau cũng chính vì chúng khác tên.

Không đặc trưng vào context như thế nào (Activity, Fragment, Application, ...) mà nó được call, nó luôn luôn trả về instance như là nhau khi chúng ta Điện thoại tư vấn method trên cùng với thương hiệu giống như nhau. Như vậy bảo đảm an toàn rằng chúng ta luôn luôn nhận được dữ liệu tiên tiến nhất được lưu giữ.

*
pref2 và pref3 sử dụng và một thương hiệu vào lệnh Gọi nên nó là thuộc 1 instance

Cấu trúc bên trong của Shared Preferences

Quý khách hàng rất có thể tưởng tượng kết cấu bên phía trong Shared Preferences là một trong bộ nhớ lưu trữ in-memory (RAM) ném lên một bộ nhớ lưu trữ disk-storage (External Storage). Mọi thao tác hồ hết trải qua bộ lưu trữ in-memory trước tiên sau đó bắt đầu mang đến disk-storage vào ngôi trường vừa lòng quan trọng.

Sở ghi nhớ In-Memory về thực chất là 1 Hash-Map, điều này chất nhận được các thao tác đều sở hữu độ tinh vi là O(1) Khi chạy.

Xem thêm: Răng Sứ Cercon Có Tốt Không ? Bọc Sứ Cercon Như Thế Nào? Ưu Nhược Điểm Của Dòng Sứ Cercon

val maps = HashMap()Disk Storage thực ra là một tệp tin xml được kết cấu nhỏng sau: value

*

Lấy dữ liệu

Tất cả các thao tác được trải qua bộ nhớ In-Memory, điều này Tức là ngay mau lẹ và tránh giảm được những thao tác làm việc I/O. Bởi vì toàn bộ các làm việc trải qua bộ lưu trữ in-memory vì thế nó bảo đảm an toàn rằng quý giá trả về sẽ là quý hiếm tiên tiến nhất.

val value = pref.getString(key, null)

*
Chú ý rằng giả dụ lần thứ nhất dữ liệu được cài lên, nó đang đợi cho tới Lúc dữ liệu được loaded vào bộ lưu trữ in-memory từ bỏ disk storage.

Lưu tài liệu thông qua commit()

Lưu dữ liệu vào in-memory trước kế tiếp thực hiện ghi vào disk một giải pháp đồng bộ. Bởi vì chưng có sự tyêu thích gia của làm việc I/O, main thread sẽ ảnh hưởng blocked cho đến Khi data được ghi không còn vào disk storage. Đây là một trong thao tác kỉm hiệu quả đối với apply()

Bởi vì thao tác làm việc ghi tài liệu lên disk storage là đồng điệu cho nên vì thế trạng thái trả về đã là 1 trở nên boolean. Do kia chúng ta cũng có thể xác nhận rằng liệu thao tác mà lại chúng ta triển khai gồm thành công hay không bằng phương pháp đánh giá công dụng trả về.

val result = pref.edit().putString(key, "value").commit()

*
Lưu một giá trị string vào nói qua preferences thực hiện commit()

Lưu quý hiếm thông qua apply()

Lưu quý giá vào in-memory trước tiếp nối ghi dữ liệu một biện pháp bất nhất quán vào disk-storage.Main thread vẫn không trở nên blocked với không hẳn ngóng làm việc trên disk nữa. Tuy thao tác làm việc ghi lên disk storage là asynchronous tuy nhiên ngẫu nhiên thao tác làm việc read tức thì sau lời gọi apply() vẫn các trả về hiệu quả là mới nhất bởi vì làm việc read (get) sẽ tiến hành triển khai trải qua in-memory.

Bởi vày làm việc ghi tài liệu lên disk-storage là asynchronous, vẫn không có giá trị nào được trả về. Do đó chúng ta tất yêu xác nhận được là liệu thao tác làm việc các bạn tiến hành bao gồm thành công xuất sắc hay không,

Hãy áp dụng apply trừ khi chúng ta bạn phải xác nhận hiệu quả của thao tác làm việc chúng ta tiến hành.

pref.edit().putString(key, "value").apply()

*
Lưu một giá trị string vào shared preferences bằng apply

Các thao tác làm việc khác

Ngoại trừ việc put với get, shared preferences còn cung cấp những làm việc sau:

Kiểm tra xem một key tất cả lâu dài tuyệt khôngLắng nghe bài toán đổi khác của shared preferences thông qua listenerĐọc toàn thể những entries thành mapXóa quăng quật một entryXóa vứt toàn cục những entries (Clear all)

Bonus

Shared preferences phạm vi ứng dụng được giữ trên mặt đường dẫn

data/data//shared_prefs/.xmlquý khách hàng hoàn toàn có thể rước nó ra với xuất hiện xem tài liệu bên phía trong.