Android 使用SharedPreferences进行数据存储

Android提供的SharedPreferences类似于Windows程序中常用的ini文件,以Key-Value的形式来保存应用程序的属性设置信息(区分数据类型)。比如,可以用来保存用户上一次的登录信息;可以保存媒体播放程序的音量设置以及上次播放位置等。

在使用SharedPreferences时常用的方法包括(方法具体含义参考官方文档):
Context.getSharedPreferences (String name, int mode) 
Activity.getPreferences (int mode) 
SharedPreferences.edit(); 
SharedPreferences.getXXX(name, defaultValue); 
SharedPreferences.Editor.putXXX(name, value); 
SharedPreferences.Editor.commit();

步骤:
保存数据
Log.d("SharedPreferences", "保存数据..."); 
//获得SharedPreferences对象 
SharedPreferences settings = this.getSharedPreferences("shared_file", 0); 
//获得可编辑对象 
SharedPreferences.Editor editor = settings.edit(); 
editor.putString("name", "Kael Chen"); 
editor.putInt("age", 22); 
editor.commit(); 
Log.d("SharedPreferences", "保存数据成功");

读取数据
Log.d("SharedPreferences", "获取数据..."); 
SharedPreferences settings = this.getSharedPreferences("shared_file", 0); String name = settings.getString("name", "no name");
 int age = settings.getInt("age", 0); 
Log.d("SharedPreferences", "name:" + name + ", age:" + age); 
Log.d("SharedPreferences", "获取数据成功"); 



执行代码后,可以看到在data/data/pacakge name/shared_prefs/目录下多了一个shared_file.xml文件,文件名是由getSharedPreferences方法中传入的参数决定的。

文件内容如下:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map><string name="name">Kael Chen</string><int name="age" value="22" /></map>

可以看到,不同于ini文件的是,这里是严格区分了数据的类型的,所以在getXXX和putXXX相同数据时使用的类型一定要匹配。

另外值得注意的是getSharedPreferences 方法中的mode参数以及getPreferences和getSharedPreferences 的区别。

getPreferences和getSharedPreferences的区别:

1、getPreferences只能由Activity调用,只在调用它的Activity范围内有效。

2、getSharedPreferences是由Context调用,在包范围内有效。可以这样理解,AndroidManifest.xml文件中定义了包的位置,比如我的测试程序中定义的包为cn.kael.sample,那么android会建立data/data/cn.kael.sample/shared_prefs/的目录,并在其下产生SharePreferences文件。因此如果已经在一个地方使用了SharedPrefernces,并创建了相应的SharedPrefernces文件,然后你想在另一个地方使用该SharedPrefernces文件,你只需要根据文件的路径规则判断在新的地方使用SharedPrefernces生成的路径是不是和之前SharedPrefernces文件的路径一致,就可以知道两者之间是否能够共用SharedPrefernces,即使它们不属于同一个应用程序(因为android是根据包名来决定SharedPrefernces文件的创建位置的,和应用程序名无关)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值