天天看點

操作SharedPreferences的注意點

如果使用SharedPreferences用于資料存取,大部分人喜歡使用如下代碼:

  1. public void writeSharedprefs(int pos) {  
  2.     SharedPreferences preferences = getApplicationContext().getSharedPreferences("test", Context.MODE_PRIVATE);  
  3.     SharedPreferences.Editor editor = preferences.edit();  
  4.     editor.putInt("pos", pos);  
  5.     editor.commit();  
  6. }  
  7. public int writeSharedprefs() {  
  8.     int pos = preferences.getInt("pos", 0);  
  9.     return pos;  

但很多人忽略了一點,就是跨程序使用的時候,你就會發現從SharedPreferences讀出來的資料永遠都是第一次寫入的資料。 舉例,例如播放器是一個獨立程序,另外某個Activity是另一個獨立程序,播放器與這個Activity利用SharedPreferences通信的時候,如果使用MODE_PRIVATE操作模式,就會出錯。

是以,如果跨程序使用SharedPreferences的使用,需要使用MODE_MULTI_PROCESS模式,代碼如下:

  1.     SharedPreferences preferences = getApplicationContext().getSharedPreferences("test", Context.MODE_MULTI_PROCESS);