SharedPreferences是以索引值對來儲存應用程式的配置資訊的一種方式,它只能儲存基礎資料型別 (Elementary Data Type)。一個程式的設定檔僅可以在本應用程式中使用,或者說只能在同一個包內使用,不能在不同的包之間使用。 實際上SharedPreferences是採用了XML格式將資料存放區到裝置中,在DDMS中的File Explorer中的/data/data/<package name>/shares_prefs下。
以下表格為擷取SharedPreferences對象的兩個方法:
傳回值 |
函數 |
備忘 |
SharedPreferences |
Context.getSharedPreferences(String name,int mode) |
name為本組件的設定檔名(如果想要與本應用程式的其他組件共用此設定檔,可以用這個名字來檢索到這個設定檔)。 mode為操作模式,預設的模式為0或MODE_PRIVATE,還可以使用MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE。 |
SharedPreferences |
Activity.getPreferences(int mode) |
設定檔僅可以被調用的Activity使用。 mode為操作模式,預設的模式為0或MODE_PRIVATE,還可以使用MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE。 |
如果要讀取設定檔資訊,只需要直接使用SharedPreferences對象的getXXX()方法即可,而如果要寫入配置資訊,則必須先調用SharedPreferences對象的edit()方法,使其處於可編輯狀態,然後再調用putXXX()方法寫入配置資訊,最後調用commit()方法提交更改後的設定檔。
以下是範例程式碼:
import android.app.Activity; </p><p>import android.content.SharedPreferences; </p><p>public class Calc extends Activity { </p><p>public static final String PREFS_NAME = "MyPrefsFile"; </p><p>. . . </p><p>@Override </p><p>protected void onCreate(Bundle state){ </p><p>super.onCreate(state); </p><p>. . . </p><p>//載入設定檔 </p><p>SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); </p><p>//或者使用 SharedPreferences settings = getPreferences(0); </p><p>boolean silent = settings.getBoolean("silentMode", false); </p><p>setSilent(silent); </p><p>} </p><p>@Override </p><p>protected void onStop(){ </p><p>super.onStop(); </p><p>//寫入設定檔。可以使用SharedPreferences.Editor來輔助解決。 </p><p>SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); </p><p>SharedPreferences.Editor editor = settings.edit(); </p><p>editor.putBoolean("silentMode", mSilentMode); </p><p>editor.commit(); //一定要記得提交 </p><p>//或者再簡單化一可以這樣寫 </p><p>SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); </p><p>setting.edit().putBoolean(“silentMode”,mSilentMode).commit(); </p><p>} </p><p>}