+1

Android SharedPreference

Giới thiệu

  • SharedPreference là một lớp cho phép lưu trữ và nhận dữ liệu theo key-value với các kiểu dữ liệu nguyên thuỷ như integer, string, boolean, float, long.
  • Preference gần giống với Bundle nhưng nó có thể lưu trữ dữ liệu còn Bundle thì không.

Lấy một SharedPreference

  1. Lấy một SharedPreference mặc định trong ứng dụng bằng cách gọi hàm
SharedPreference sharedPreference = PreferenceManager.getDefaultSharedPreference(this);
  1. Tạo một SharedPreference
SharedPreference shared = getSharedPreference(MySharedPreference, MODE_PRIVATE);
  1. Lấy một SharedPreference mặc định của một Activity
SharedPreference shared = getPreferences(MODE_PRIVATE);

SharedPreferrence sẽ được lưu ở data/data/packageName/shared_prefs/filename_

Cập nhật SharedPreference

  • Để cập nhật SharedPreference, ta cần sử dụng Editor để thêm, sửa, xoá nội dung của preferrence.
  • Các hàm thêm/sửa và lấy ra nội dung tương ứng là
    1. putBoolean()/getBoolean()
    2. putInt()/getInt()
    3. putLong()/getLong()
    4. putFloat()/getFloat()
    5. putString()/getString()
  • Hàm xoá preferrence: remove(String key)
  • Sau khi gọi hàm này cần được gọi tiếp theo hàm commit() để xác nhận
  • clear(): xoá toàn bộ data trong SharedPreference
  • commit(): xác nhận edit

SharedPreference mode

  • MODE_PRIVATE: chỉ ứng dụng có thể truy nhập vào
  • MODE_WORLD_READABLE: các ứng dụng khác có thể đọc được nội dung nhưng không thể sửa hoặc thêm
  • MODE_WORLD_WRITABLE: Ứng dụng khác có thể đọc/ghi nội dung
  • MODE_MULTI_PROCESS: Nhiều process có thể cùng chỉnh sửa SharedPreference

All rights reserved

Bình luận

Đăng nhập để bình luận
Avatar
@levan.an
thg 9 21, 2016 6:07 CH

Xin bổ sung một chút về Editor preferences: Commit và Apply:

Cả 2 hàm commit() hoặc apply() đều được dùng để xác nhận sau khi chỉnh sửa sharedpreference.

  • Hàm apply() được thêm vào Android từ bản 2.3. Nó commit mà không trả về giá trị boolean là thành công(true) hay thất bại (false).
  • Hàm commit() có trả về boolean.
  • Hàm apply() là bất đồng bộ (nghĩa là nhiều hàm có thể cùng gọi 1 lúc) nên tốc độ cao hơn commit()
  • Nếu ta gọi hàm apply() và ngay sau đó gọi hàm get...() để đọc giá trị, thì sẽ nhận được giá trị mới.
  • Nếu goi apply() và nó vẫn đang chạy, thì bất kì lời gọi commit nào đều bị block.

http://developer.android.com/reference/android/content/SharedPreferences.Editor.html#apply()

Avatar
+1
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí