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