SharedPreferences 是使用键值对的方式来存储数据,当保存一条数据时,需要给这条数据提供对应的键,读取数据是可以通过对应的键把相应的值取出来。和JSON很像(JavaScript 对象表示法(JavaScript Object Notation),用于存储和交换文本信息的语法。);使用SharedPreferences保存JSON数据很方便。
3种获取SharedPreferences 对象的方法:
- Context类中的getSharedPrefences()方法,传入参数文件名和操作模式
- Activity类中的getPrefences()方法,自动把当前活动类名作为文件名
- PreferenceManager 类中的 getDefaultSharedPreferences()方法,静态方法,把当前包名作为文件名
向SharePreferences文件中存储数据
- 调用 SharedPreferences 对象的 edit()方法来获取一个 SharedPreferences.Editor 对象
- 向 SharedPreferences.Editor 对象中添加数据
- 调用 commit()方法将添加的数据提交,从而完成数据存储操作
保存数据:第2种获取SharedPreferences 对象的方法
SharedPreferences 对象–SharedPreferences.Editor 对象–SharedPreferences.Editor 对象中添加数据–commit()方法提交
SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
editor.putString("name", "Tom");//key,value
editor.putInt("age", 28);
editor.putBoolean("married", false);
editor.commit();
得到的结论:数据保存到MainActivity.xml中
导出的数据是:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="name">Tom</string>
<boolean name="married" value="false" />
<int name="age" value="28" />
</map>
恢复数据:
SharedPreferences 对象–get 方法用于对存储的数据进行读取
SharedPreferences pref = getSharedPreferences("MainActivity", MODE_PRIVATE);
String name = pref.getString("name", "");
int age = pref.getInt("age", 0);
boolean married = pref.getBoolean("married", false);
Log.d("MainActivity", "name is " + name);
Log.d("MainActivity", "age is " + age);
Log.d("MainActivity", "married is " + married);
log出的数据为: