Android开发之SharedPreferences的使用

安卓客户端的数据保存是一个很头疼的问题,虽然SQLite是一个轻量级,也很方便使用,但是在一些情况下使用起来仍然会觉得不方便。这就需要我们使用更轻量级的文件方式来保存一些数据。

针对上面的问题,SharedPreferences就是一个很好的解决方案:SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态,Activity暂停时,将此activity的状态保存到SharedPereferences中;当Activity重载,系统回调方法onSaveInstanceState时,再从SharedPreferences中将值取出。

获取

SharedPreferences可以通过Context或者Activity来获取,实现的代码如下:
context.getSharedPreferences(string, Activity.MODE_PRIVATE);
也可以用Activity代替代码里面的Context。
需要注意的是,两种方式获取的SharedPreferences是有区别的。
Context下的getSharedPreferences方法获得的可以被同一应用下的Activity共享。
而Activity中的getSharedPreferences方法获得的SharedPreferences只能被该Activity使用。

模式

SharedPreferences有四种模式,
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容。
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
Context.MODE_WORLD_READABLE:表示当前文件可以被其他应用读取。
Context.MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。

Android下的使用

通过SharedPreferences可以保存程序的某些配置信息,而程序员不需要知道它到底以什么形式保存的,保存在了什么地方。

数据读取

Java代码

String PREFS_NAME = "Note.sample.roiding.com";
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
String hello = settings.getString("hello", "Hi");

这段代码中:

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);

通过名称,得到一个SharedPreferences,顾名思义,这个Preferences是共享的,共享的范围据现在同一个Package中,这里面说所的Package和Java里面的那个Package不同,貌似这里面的Package是指在AndroidManifest.xml文件中:
Xml代码

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.roiding.sample.note"
android:versionCode="1"
android:versionName="1.0.0">
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.roiding.sample.note"
android:versionCode="1"
android:versionName="1.0.0">

这里面的package。后面的那个int是用来声明读写模式,这里设为0就可以了,表示这个数据时私有的。

boolean silent = settings.getBoolean(”silentMode”, false);

获得一个boolean值,这里就会看到用Preferences的好处了:可以提供一个缺省值。也就是说如果Preference中不存在这个值的话,那么就用后面的值作为返回值,这样就省去了我们的if什么什么为空的判断。

数据写入

Java代码

String PREFS_NAME = "Note.sample.roiding.com";
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", true);
editor.putString("hello", "Hello~");
editor.commit();

有了上面数据读取的代码,这里面的就容易理解了,只是别忘了最后的commit();

总结

在Android系统中,ShredPreferences中的信息以XML文件的形式保存在 /data/data/PACKAGE_NAME/shared_prefs目录下。
我们可以通过文件浏览器查看,手机当中几乎所用的应用都使用了SharedPreferences。
大家可以去看一些优秀应用的数据,这可以帮助我们更好的设计自己的应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值