------------------------------------------SharedPreferences存储--------------------------------------------
SharedPreferences 使用键值对方式来存储数据的。当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出。
SharedPreferences 支持多种不同数据类型的存储,可以按照需要取出数值型,或者字符型的数据。
-----------------------------------------获取SharedPreferences对象-----------------------------------------
要想使用 SharedPreferences 来存储数据,首先要获取到 SharedPreferences 对象。Android 主要提供了三种方法来得到 SharedPreferences 对象。
1. Context 类中的 getSharedPreferences() 方法
此方法接受两个参数,第一个参数用于指定 SharedPreferences 文件的名称,如果指定的文件不存在则会创建一个。
SharedPreferences 文件都是存放在 /data/data/<包名>/shared_prefs/ 目录下的。
第二个参数用于指定操作模式,主要为 MODE_PRIVATE(默认操作模式) 和 MODE_MULTI_PROCESS(多进程读写) 。
2. Activity 类中的 getPreferences() 方法
这个方法和 Context 中的 getSharedPreferences() 方法类似,不过它只接收一个操作模式参数,使用这个方法时会自动将当前活动的类名作为 SharedPreferences 的文件名。
3. PreferenceManager 类中的 getDefaultSharedPreferences() 方法
这是一个静态方法,它接收一个 Context 参数,并自动使用当前应用程序的包名作为前缀来命名 SharedPreferences 文件。
得到了 SharedPreferences 对象之后,就可以开始向 SharedPreferences 文件中储存数据了。
---------------------------------------将数据存储到SharePreferences中--------------------------------------
使用 SharedPreferences 对象储存数据:
1. 调用 SharedPreferences 对象的 edit() 方法来获取一个 SharePreferences.Editor 对象。
2. 向 SharedPreferences.Editor 对象中添加数据,如果添加一个字符串则使用 putString() 方法,以此类推。
3. 调用 commit() 方法将添加的数据提交,从而完成数据存储操作。
将数据存储到 SharedPreferences 文件中:
public void onClick(View v) { //获取 SharedPreferences 对象 SharedPreferences shared = getSharedPreferences("data", MODE_PRIVATE); //获取 SharedPreferences.Editor 对象 SharedPreferences.Editor editor = shared.edit(); //以键值对方式传入数据 editor.putString("name", "Jay Chou"); editor.putInt("age", 37); editor.putBoolean("married", true); //提交数据 editor.commit(); }
最终得到的 data.xml 文件内容:
<?xml version=‘1.0‘ encoding=‘utf-8‘ standalone=‘yes‘ ?> <map> <string name="name">Jay Chou</string> <int name="age" value="37" /> <boolean name="married" value="true" /> </map>
可以看到所有的数据都已经成功保存下来了,并且SharedPreferences 文件是使用XML格式来对数据进行管理的。
注意:如果要清除 XML 中的所有数据,使用 SharedPreferences.Editor 对象的 clear() 方法,就能够将 SharedPreferences 文件中的数据全部清除。
---------------------------------------从SharePreferences中读取数据--------------------------------------
相比从 SharedPreferences 文件中存储文件,读取文件显得更加简单。SharedPreferences 对象中提供了一系列的 get 方法用于对存储的数据进行读取,每种 get 方法都对应了 SharedPreferences.Editor 中的一种 put 方法。
这些 get 方法都接收两个参数,第一个参数是键,传入存储数据时使用的键就可以得到相应的值了,第二个参数是默认值,即表示当传入的键找不到对应的值时,会以什么样的默认值进行返回。
获取 SharedPreferences 文件数据,并打印到控制台:
public void onClick(View v) { //获取SharedPreferences对象 SharedPreferences shared = getSharedPreferences("data", MODE_PRIVATE); //获取xml数据 String name = shared.getString("name", "null"); int age = shared.getInt("age", 0); boolean married = shared.getBoolean("married", false); //获取不存在的数据 String hobby = shared.getString("hobby", "unknown"); //打印日志记录 Log.d("woider", "name: " + name); Log.d("woider", "age: " + age); Log.d("woider", "married: " + married); Log.d("woider", "hobby: " + hobby); }
日志截图: