2012-01-03 31 views
6

Tôi có 2 quy trình trong ứng dụng của mình. Từ một quy trình, tôi lưu dữ liệu vào SharedPreferences. Từ quy trình thứ hai - truy xuất. Khi tôi lấy dữ liệu, tôi nhận được SharedPreferences với dữ liệu cũ (tôi kiểm tra tệp xml và xem, dữ liệu hiện tại trong tệp và dữ liệu đã nhận được khác nhau). Có vẻ như dữ liệu này đã được lưu vào bộ nhớ cache. Tôi đã thay đổi phương thức lưu (cam kết/áp dụng) nhưng không có kết quả. PS: chỉ ví dụ http://pastebin.com/Zx2ffvSgBộ nhớ cache dữ liệu trong Tùy chọn được chia sẻ

//saving 
{ ... 
SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_PRIVATE); 
    SharedPreferences.Editor prefsEditor = myPrefs.edit(); 
    prefsEditor.putString(MY_NAME, "Sai"); 
    prefsEditor.putString(MY_WALLPAPER, "f664.PNG"); 
    prefsEditor.commit(); 
... } 

//retrieving 
// when i call getData() I put "this" as argument. 
public void getData(Context context){ 
SharedPreferences myPrefs = context.getSharedPreferences("myPrefs", MODE_PRIVATE); 
...} 
+0

chúng tôi sẽ phải xem một số mã để xem nơi lỗi là –

+0

tôi nghĩ rằng nó không phù hợp trong tình huống này. Tôi mô tả công việc đơn giản với SharedPreference. Có lẽ có bất kỳ "cạm bẫy" nào trong tình huống của tôi? – x90

+0

Đảm bảo khóa trong cặp khóa-giá trị giống nhau. –

Trả lời

17

Giải pháp là thêm vào lá cờ neccesary cờ Context.MODE_MULTI_PROCESS khi sở thích chia sẻ mở (Có sẵn trong API Level 11 trở lên)

+0

Cảm ơn! Bạn đã cứu ngày của tôi. –

Các vấn đề liên quan