Android SharedPreferences用法及原理

 Android提供用来存储一些简单的配置信息的一种机制,例如,一些默认欢迎语、登录的用户名和密码等。其以键值对的方式存储,使得我们可以很方便的读取和存入.当Activity暂停时,将此activity的状态保存到SharedPereferences中;当Activity重载,系统回调方法onSaveInstanceState时,再从SharedPreferences中将值取出。 

SharedPreferences是以XML的格式以文件的方式自动保存的,在DDMS中的File Explorer中展开到/data/data/<packagename>/shared_prefs下.

Sharedpreferences提供了常规的数据类型保存接口比如:int、long、boolean、String、Float、Set和Map这些数据类型。

注意:Preferences只能在同一个包内使用,不能在不同的包之间使用。

用法:

1、得到SharedPreferences对象

2、调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象。

3、向SharedPreferences.Editor对象中添加数据。

4、调用commit方法将添加的数据提交。

详细过程:

1、得到SharedPreferences对象

方法1: 
Context.getSharedPreferences(文件名称,操作模式) 
文件名称不存在就会创建一个,操作模式有两种: 
MODE_PRIVATE:默认操作模式,直接在把第二个参数写0就是默认使用这种操作模式,这种模式表示只有当前的应用程序才可以对当前这个SharedPreferences文件进行读写。 
MODE_MULTI_PRIVATE:用于多个进程共同操作一个SharedPreferences文件。

注:MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE这两种模式已经在android 4.2版本以后废弃了。 
方法2: 
Activity.getPreferences(操作模式) 
使用这个方法会自动将当前活动的类名作为SharedPreferences的文件名,底层调用的是下面这个方法 
Activity.getSharedPreferences(String name, int mode)我们也可以直接调用getSharedPreferences这个方法,传入自定义的名字。 
方法3 
PreferenceManager.getDefaultSharedPreferences(Context) 
使用这个方法会自动使用当前程序的包名作为前缀来命名SharedPreferences文件

2、调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象。

SharedPreferences.Editor editor = getSharedPreferences(“data”,MODE_PRIVATE).edit();

3、向SharedPreferences.Editor对象中添加数据。

editor.putString(“name”,”Lily”); //以键值对形式存储 
editor.putInt(“age”,”20”); //以键值对形式存储 
editor.putBoolean(“married”,false); //以键值对形式存储

4、调用commit方法将添加的数据提交。

editor.commit();

代码示例: 
SharedPreferences pref = MainActivity.this.getSharedPreferences(“data”,MODE_PRIVATE); //文件名称,操作模式
SharedPreferences.Editor editor = pref.edit(); 
editor.putString(“name”,”lily”); 
editor.putString(“age”,”20”); 
editor.putBoolean(“married”,false); 
editor.commit();

如果要读取数据: 
SharedPreferences pref = getSharedPreferences(“data”,MODE_PRIVATE); //文件名称,操作模式
String name = pref.getString(“name”,”“);//第二个参数为默认值 
int age = pref.getInt(“age”,0);//第二个参数为默认值 
boolean married = pref.getBoolean(“married”,false);//第二个参数为默认值

参考:SharedPreferences的简单用法

            SharedPreferences的用法以及详解

            使用SharedPreference保存list数据,其实可以保存Object对象

 

猜你喜欢

转载自blog.csdn.net/mountain_hua/article/details/81431096