SharePreferences 是基於XML文件存儲key-value鍵值對數據,通常用來存儲一些簡單的配置信息。其存儲位置在/data/data/<包名>/shared_prefs目錄下。SharedPreferences對象本身只能獲取數據而不支持存儲和修改,存儲修改是通過Editor對象實現。
我一般用到保存用戶的習慣上,當程序下次起來的時候,按照用戶的習慣做某件事或者不坐某件事。
比如用戶看電視,而電視總共有1-10個頻道,當用戶在最后一次設置頻道為5的時候,此時我就會把5給記錄下來,電視關閉。然后等用戶下次再開打電視看的時候,此時的頻道就是用戶最后設置的5頻道,當然這只是一個例子。
//聲明
public static final String SAVESTRING_INFOS = "SAVESTRING_Infos";
public static final String SAVE_KEY;
在需要的地方調用存儲函數去做數據的存儲:
//調用存儲函數
SaveStringStr("頻道5");
數據的存儲:
//把實參save_str以SAVE_KEY的鍵存儲
private void SaveStringStr(String save_str)
{
Context ctx = MainActivity.this;
SharedPreferences settings = ctx.getSharedPreferences(SAVESTRING_INFOS, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString( SAVE_KEY, save_str);
editor.commit();
}
接着就是在讀取所存儲鍵值對然后根據值做相應處理
//下次使用該鍵值對時使用
//
SharedPreferences settings = getSharedPreferences(SAVESTRING_INFOS, 0); // 獲取一個SharedPreferences對象
String getsave_str = settings.getString(SAVE_KEY, "");
if(getsave_str.equals("頻道5"))
{
//執行想做的動作
}
但是SharedPreferences也有其自身缺陷,比如其職能存儲boolean,int,float,long和String五種簡單的數據類型,比如其無法進行條件查詢等。
extends Activity可以正常使用如果是extends Dialog則會找不到 getSharedPreferences(,); 解決方法還沒找到。
幾種存儲方式:
//Shared Preferences
//Store private primitive data in key-value pairs. 輕量的以鍵值對的形式進行存儲
//Internal Storage
//Store private data on the device memory. 設備上的文件存儲
//External Storage
//Store public data on the shared external storage. 外部的文件存儲,一般指存儲在SD卡上的文件,優勢是不隨程序卸載而刪除
//SQLite Databases
//Store structured data in a private database. 這個比較常見了數據庫
//Network Connection
//Store data on the web with your own network server. 網絡獲取
參考:http://www.cnblogs.com/wisekingokok/archive/2011/09/16/2177833.html