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

posted on 2012-03-09 16:22  瓦楞球  阅读(6741)  评论(3编辑  收藏  举报