Android tương đương với NSUserDefaults trong iOS


103

Tôi muốn lưu một số dữ liệu đơn giản. Trên iPhone, tôi có thể làm điều đó với NSUserDefaultsObjective-C.

Lệnh tương tự ở đây trong Android là gì?

Tôi chỉ lưu một vài biến, để sử dụng lại miễn là ứng dụng được cài đặt. Tôi không muốn sử dụng một cơ sở dữ liệu phức tạp chỉ để làm điều đó.

Câu trả lời:


210

Đây là giải pháp đơn giản nhất mà tôi đã tìm thấy:

//--Init
int myvar = 12;


//--SAVE Data
SharedPreferences preferences = context.getSharedPreferences("MyPreferences", Context.MODE_PRIVATE);  
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("var1", myvar);
editor.commit();


//--READ data       
myvar = preferences.getInt("var1", 0);  

Trong đó 'context' là bối cảnh hiện tại (ví dụ: trong một lớp con hoạt động có thể là cái này ).


đây là con đường để đi để lưu trữ những điều rất đơn giản, đơn giản và thẳng vào vấn đề
smith324

Tôi đã sửa lỗi trong mã (đang gọi getPreferences không tồn tại, không phải getSharedPreferences).
Ben Clayton

14
Cập nhật năm 2015: Android khuyến nghị sử dụng apply () bây giờ hơn commit () vì apply () hoạt động trên một chuỗi nền thay vì lưu trữ dữ liệu liên tục ngay lập tức và có thể chặn chuỗi chính.
AppsIntheParkNYC

Có cách nào để truy cập SharedPreferences này từ mã jni không?
IgorGanapolsky

2
Để có được 'bối cảnh' từ bên trong AppCompatActivity, bạn có thể sử dụnggetApplicationContext()
Brainware
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.