Android数据存储之SharedPreferences

时间:2022-06-23 05:30:19

前一段时间因为学业关系都太忙了,最近好不容易闲下来了,尽管如此,但是自己还是有很多东西要学习,不过在5月份之前,摆在我面前的最重要的两件事是Android的学习和Java网络编程的学习。说起来Android开发,从去年8月份开始学习,直到现在都有9个月了,如果让我这9个月啥都不做,我一定可以在这一领域小有成绩的,可惜的是上个学期的课实在太多了,没办法挤出系统的时间好好学习,以至于直到现在Android开发还是半生不熟,好在现在终于可以阅读官方文档,将以前学习到的零散的知识一点一点地串联想来了。在开始总结数据库开发之前,有件事不得不说,我目前手头有三本关于Android开发的书,分别是《Android开发入门与实战》、《Android SDK开发范例大全》和《Android应用开发揭秘》,前两本书是我自己买的,第三本是参加活动得到的奖品。总体来说第一本还是不错的,只是错误太多,很多知识点都讲不到,第二本没怎么看,权当参考书了,第三本书重点在对动画和游戏方面涉及了很多,我只看过一总分,当后来阅读官方文档时,才发现第三本书就我所看过的,全是在翻译官方文档,不知道我没看过的会怎么样。我建议,以后学习的时候,如果有官方文档,一定要优先读官方文档,不要怕有英文,你可以像我这样开着灵格斯,哪个单词不懂,就查一下,很容易理解的。

SharedPreferences是以键值对来存储应用程序的配置信息的一种方式,它只能存储基本数据类型。一个程序的配置文件仅可以在本应用程序中使用,或者说只能在同一个包内使用,不能在不同的包之间使用。 实际上SharedPreferences是采用了XML格式将数据存储到设备中,在DDMS中的File Explorer中的/data/data/<package name>/shares_prefs下。

以下表格为获取SharedPreferences对象的两个方法:

返回值

函数

备注

SharedPreferences

Context.getSharedPreferences(String name,int mode)

name为本组件的配置文件名(如果想要与本应用程序的其他组件共享此配置文件,可以用这个名字来检索到这个配置文件)。

mode为操作模式,默认的模式为0或MODE_PRIVATE,还可以使用MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE。

SharedPreferences

Activity.getPreferences(int mode)

配置文件仅可以被调用的Activity使用。

mode为操作模式,默认的模式为0或MODE_PRIVATE,还可以使用MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE。

如果要读取配置文件信息,只需要直接使用SharedPreferences对象的getXXX()方法即可,而如果要写入配置信息,则必须先调用SharedPreferences对象的edit()方法,使其处于可编辑状态,然后再调用putXXX()方法写入配置信息,最后调用commit()方法提交更改后的配置文件。

以下是示例代码:

import android.app.Activity;

import android.content.SharedPreferences;

public class Calc extends Activity {

public static final String PREFS_NAME = "MyPrefsFile";

. . .

@Override

protected void onCreate(Bundle state){

super.onCreate(state);

. . .

//载入配置文件

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);

//或者使用 SharedPreferences settings = getPreferences(0);

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

setSilent(silent);

}

@Override

protected void onStop(){

super.onStop();

//写入配置文件。可以使用SharedPreferences.Editor来辅助解决。

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);

SharedPreferences.Editor editor = settings.edit();

editor.putBoolean("silentMode", mSilentMode);

editor.commit(); //一定要记得提交

//或者再简单化一可以这样写

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);

setting.edit().putBoolean(“silentMode”,mSilentMode).commit();

}

}