一、概述
SharedPreferences类似于Windows程序中常用的ini文件,以Key-Value的形式来保存应用程序的属性设置信息(区分数据类型)。比如,可以用来保存用户上一次的登录信息;可以保存媒体播放程序的音量设置以及上次播放位置等。
二、数据以XML文件的方式,保存在data/data/pacakge name/shared_prefs/目录下,注意:只有保存过一次数据,shared_prefs目录和下的配置文件才存在。
三、实现方法:
1、保存数据:
private SharedPreferences ps;
ps = this.getSharedPreferences("test",Activity.MODE_PRIVATE);
Editor editor =settings.edit();
editor.putInt("key",8);
editor.commit();
2、读取数据
int key = ps.getInt("key",0);//从test.xml配置文件中读取KEY的值,没有则赋值为0;
四、getPreferences和getSharedPreferences的区别
1、getPreferences只能由Activity调用,只在调用它的Activity范围内有效。
2、getSharedPreferences是由Context调用,在包范围内有效。
3、另外:因为getPreferences是activity有效,SharedPreferences settings = getPreferences(Activity.MODE_PRIVATE);所以这个函数没有指明配置文件名,其配置文件名为类名。
五、操作模式说明:
Context.MODE_PRIVATE:新内容覆盖原内容
Context.MODE_APPEND:新内容追加到原内容后
Context.MODE_WORLD_READABLE:允许其他应用程序读取
Context.MODE_WORLD_WRITEABLE:允许其他应用程序写入,会覆盖原数据。
六、程序间共享SharedPreferences
A程序提供共享数据:A程序包名为com.leno.ex_data
private SharedPreferences sp;
sp = getSharedPreferences("ex_data", MODE_WORLD_READABLE);//操作模式为允许其他程序读取
Editor editor =sp.edit();
editor.putString("login",et_login.getText().toString());
editor.commit();
B程序读取A程序的配置数据:
Context other_apps_context = null;
try
{
//获取共享数据A程序的包上下文环境
other_apps_context = createPackageContext("com.leno.ex_data", 0);
}
catch (NameNotFoundException e)
{
}
//从A程序的上下文环境获取共享参数对象SharedPreferences
SharedPreferences other_app_sp = other_apps_context.getSharedPreferences(
"ex_data", Context.MODE_PRIVATE);
//读取数据
String str = other_app_sp.getString("login","");