Nhiều ứng dụng có thể cung cấp một cách để nắm bắt tùy chọn của người dùng về cài đặt của một ứng dụng cụ thể hoặc một hoạt động. Để hỗ trợ điều này, Android cung cấp một bộ API đơn giản.
Tùy chọn thường là các cặp giá trị tên. Chúng có thể được lưu trữ dưới dạng “Tùy chọn được chia sẻ” trong các hoạt động khác nhau trong một ứng dụng (lưu ý rằng hiện tại nó không thể được chia sẻ giữa các quy trình). Hoặc nó có thể là thứ cần được lưu trữ cụ thể cho một hoạt động.
Sở thích dùng chung: Tất cả các thành phần (hoạt động, dịch vụ, v.v.) trong ứng dụng đều có thể sử dụng các sở thích dùng chung.
Tùy chọn xử lý hoạt động: Các tùy chọn này chỉ có thể được sử dụng với trong hoạt động và không thể được sử dụng bởi các thành phần khác của ứng dụng.
Sở thích Chia sẻ:
Các sở thích được chia sẻ được quản lý với sự trợ giúp của getSharedPreferencesphương thức của Contextlớp. Tùy chọn được lưu trữ trong tệp mặc định (1) hoặc bạn có thể chỉ định tên tệp (2) được sử dụng để tham chiếu đến tùy chọn.
(1) Đây là cách bạn nhận được phiên bản khi bạn chỉ định tên tệp
public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
MODE_PRIVATElà chế độ hoạt động cho các tùy chọn. Đây là chế độ mặc định và có nghĩa là tệp đã tạo sẽ chỉ được truy cập bởi ứng dụng gọi điện. Hai chế độ khác được hỗ trợ là MODE_WORLD_READABLEvà MODE_WORLD_WRITEABLE. Trong MODE_WORLD_READABLEứng dụng khác có thể đọc tệp đã tạo nhưng không thể sửa đổi nó. Trong trường hợp MODE_WORLD_WRITEABLEcác ứng dụng khác cũng có quyền ghi đối với tệp đã tạo.
(2) Cách được khuyến nghị là sử dụng theo chế độ mặc định, không chỉ định tên tệp
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
Cuối cùng, khi bạn có phiên bản tùy chọn, đây là cách bạn có thể truy xuất các giá trị được lưu trữ từ tùy chọn:
int storedPreference = preferences.getInt("storedInt", 0);
Để lưu trữ các giá trị trong SharedPreference.Editorđối tượng tệp ưu tiên phải được sử dụng. Editorlà giao diện lồng nhau của SharedPreferencelớp.
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Editor cũng hỗ trợ các phương pháp như remove()và clear()để xóa giá trị ưu tiên khỏi tệp.
Tùy chọn Hoạt động:
Các tùy chọn được chia sẻ có thể được sử dụng bởi các thành phần ứng dụng khác. Nhưng nếu bạn không cần chia sẻ sở thích với các thành phần khác và muốn có các hoạt động sở thích riêng. Bạn có thể làm điều đó với sự trợ giúp của getPreferences()phương pháp của hoạt động. Các getPreferencephương pháp sử dụng các getSharedPreferences()phương pháp với tên của lớp hoạt động cho tên tập tin thích.
Sau đây là mã để nhận ưu đãi
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);
Mã để lưu trữ các giá trị cũng giống như trong trường hợp sở thích được chia sẻ.
SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Bạn cũng có thể sử dụng các phương pháp khác như lưu trữ trạng thái hoạt động trong cơ sở dữ liệu. Lưu ý Android cũng chứa một gói được gọi là android.preference. Gói định nghĩa các lớp để triển khai giao diện người dùng tùy chọn ứng dụng.
Để xem thêm một số ví dụ, hãy kiểm tra bài đăng về Bộ nhớ dữ liệu của Android trên trang web của nhà phát triển.