返回列表 發帖

Android App - Shared Preference

偏好設定 (SharedPreferences) 提供一個簡易的方式來儲存應用程式的設定值,方便下次應用程式被啟動時,載入偏好設定,讓應用程式自動回復到前一次設定值。此外,也可與同一套件之應用程式共享。
要使用 SharedPreferences功能,應用程式需要匯入以下類別。
import android.content.SharedPreferences;

儲存偏好設定
Preference 是以name-value pair方式儲存應用程式狀態,通常我們會在應用程式透過 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);
}

另外, 當有多於一個的 preferences 檔案時 (用 name 來分辨), 要採用 getSharedPreferences()
如只有一個preferences 檔案, 你可採用 getPreferences(), 使用時不需要提供任何name
Bill Tang     MSN:billtang@openplatform.com.hk
Openplatform Technology Co.,Ltd. 資訊坊科技有限公司  
無線工程施工、方案設計、無線產品、天饋材料、終端設備綜合供應商
Tel: 852-27491011  Fax: 852-81483532

返回列表