SharedPreferences: 通过键值对形式保存简单的,私有的数据.
存储的类型是基本数据类型,所以常用来存储应用的配置信息,用户设置的参数等数据不大的数据;
数据存储的方式是以"键值对的"形式
SharedPreferences存储的数据的路径是/data/data/应用程序的包名/shared_prefs的目录下
在这个目录下,SharedPreferences的数据是以xml文件格式存储的,所以SharedPreferences的读写就是对xml文件的解析和写入的过程.
读数据
想要用SharedPreferences读数据,首先要获得一个SharedPreferences的对象,有两种方法:
第一,直接在用上下文的对象调用getSharedPreferences();如果一个Activity需要使用多个SharedPreferences的文件,
使用这个方法,这个方法的第一个参数是SharedPreferences的文件的文件名即XML的文件名;
第二, 也是用上下文的对象调用getPreferences();如果一个Activity只是需要使用一个SharedPreferences的文件的话,可以使用这个方法,这个方法没有参数,调用这个方法后,可以在/data/data/应用程序的包名/shared_prefs的目录下找到一个和当前的Activity的类名一样的XML文件的文件名;
写数据:
写数据可以分四步
1,用getSharedPreferences();或者getPreferences()方法得到一个SharedPreferences对象.
2. 调用SharedPreferences对象的edit()方法,获得一个SharedPreferences.Editor的内部类的对象
3.调用Editor对象的putInt(),putString();等方法,第一个参数为key(键),第二个value(值)
4,使用Editor对象的commit()方法,提交修改,否则,无法写入数据
下面是一个简单的案列
简单的说明下getSharedPreferences()的两个参数
参数1:保存数据文件的名称
参数2:数据的标记
MODE_PRIVATE:数据只能被本应用程序读和写 这是是我们经常使用的
MODE_APPEND:新内容能追加到原内容之后
MODE_WORLD_READABLE:能被其他程序读 但不能写
MODE_WORLD_WRITEABLE:能被其他程序读和写
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void OnclickBtn(View v){
switch (v.getId()) {
case R.id.btn_save://保存数据
/**
* 参数1:保存数据文件的名称
*
* 参数2:数据的标记
*
* MODE_PRIVATE:数据只能被本应用程序读和写
* MODE_APPEND:新内容能追加到原内容之后
* MODE_WORLD_READABLE:能被其他程序读 但不能写
* MODE_WORLD_WRITEABLE:能被其他程序读和写
*
*
* <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<float name="floatType" value="1.0" />
<int name="intType" value="34" />
<string name="stringType">你好</string>
<boolean name="booleanType" value="true" />
<long name="longType" value="123" />
</map>
*
* 保存的路径:data/data/程序包名/shard_prefs/参数1.xml
*
*/
// SharedPreferences preferences = getSharedPreferences("info", Context.MODE_PRIVATE);
SharedPreferences preferences = getPreferences(Context.MODE_PRIVATE);
//获取编辑者对象
Editor editor = preferences.edit();
editor.putBoolean("booleanType", true);
editor.putFloat("floatType", 1.0f);
editor.putInt("intType", 34);
editor.putLong("longType", 123l);
editor.putString("stringType", "你好");
//要提交数据
editor.commit();
break;
case R.id.btn_get://获取数据
//SharedPreferences preferences2 = getSharedPreferences("info", Context.MODE_PRIVATE);
SharedPreferences preferences2 = getPreferences(Context.MODE_PRIVATE);
boolean b1 = preferences2.getBoolean("booleanType", false);
int int1 =preferences2.getInt("intType", -1);
String str = preferences2.getString("stringType", "defauls");
String str1 = preferences2.getString("stringType1", "defauls");
Log.i("==SharedPreferences==", b1+" "+int1+" "+str+" "+str1);
break;
default:
break;
}
}