2010年8月1日 星期日

Android程式設計 (十五) 使用SharedPreferences

偏好設定(SharedPreferences)提供一個簡易的方式來儲存應用程式的設定值,方便下次應用程式被啟動時,載入偏好設定,讓應用程式自動回復到前一次設定值。此外,也可與同一套件之應用程式共享。
要使用SharedPreferences功能,應用程式需要匯入以下類別。
import android.content.SharedPreferences;
儲存偏好設定
Preference是以name-value pair方式儲存應用程式狀態,通常我們會在應用程式的onPause()方法中進行偏好設定儲存作業。首先透過getSharedPreferences()方法取得指定偏好設定檔:
public SharedPreferences getSharedPreferences (String name, int mode)
其中name為偏好設定檔名稱;mode則是偏好設定檔作業模式,MODE_PRIVATE (0)表示應用程式專用;MODE_WORLD_WRITEABLE (1)表示可與套件之其它應用程式共用。
接下來就可透過SharedPreferences.Editor編輯介面來更新偏好設定內容。這項作業必須先使用edit()方法取得SharedPreferences.Editor編輯介面,再使用putBoolean()putFloat()putInt()putLong()putString()方法來分別寫入布林資料、浮點數資料、整數資料、長整數資料及字串資料到偏好設定檔中。
    public abstract SharedPreferences.Editor putBoolean (String key, boolean value)
    public abstract SharedPreferences.Editor putFloat (String key, float value)
    public abstract SharedPreferences.Editor putInt (String key, int value)
    public abstract SharedPreferences.Editor putLong (String key, long value)
    public abstract SharedPreferences.Editor putString (String key, String value)
在此key表示偏好設定檔中的資料名稱,value則是資料值。有一點要注意,這些偏好設定值並不會立即更新,而是等到執行commit()方法後才會寫回偏好設定檔。
Date date = new Date (System.currentTimeMillis());
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    SharedPreferences settings = getSharedPreferences ("PREF_DEMO", 0);
    SharedPreferences.Editor PE = settings.edit();
    PE.putString("LAUNCH_DATE", date.toString());
    PE.putInt("LAUNCH_COUNT", count+1);
    PE.commit();
}
讀取偏好設定
要讀取偏好設定內容時,同樣先透過getSharedPreferences()方法取得指定偏好設定檔,之後再使用getBoolean()getFloat()getInt()getLong()getString()方法來分別讀取偏好設定中的布林資料、浮點數資料、整數資料、長整數資料及字串資料。
    boolean getBoolean (String key, boolean defValue)
    float getFloat (String key, float defValue)
    int getInt (String key, int defValue)
    long getLong (String key, long defValue)
    String getString (String key, String defValue)
在此key表示偏好設定檔中的資料名稱,defValue則是資料預設值。下面程式碼在應用程式一開始取回偏好設定值。
  int count=1;
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    SharedPreferences settings = getSharedPreferences("PREF_DEMO", 0);
    String LastDate = settings.getString("LAUNCH_DATE", "2010-01-01");
    count = settings.getInt("LAUNCH_COUNT", 1);
    view_date = (TextView) findViewById (R.id.txtDATE);
    view_count = (TextView) findViewById (R.id.txtCOUNT);
    view_date.setText ("Last launched: " + LastDate );
    view_count.setText ("Launched times: "+ count);
}

沒有留言:

張貼留言