您的位置:首页 > Web前端

用SharePreference存储数据

2016-02-19 09:59 387 查看
Sharepreference是Android程序中常用的数据存储方式。其本质就是一个xml文件,用于存储少量的,一般是配置文件一类的数据,其特点是简单方便。这里简单介绍一下使用方法,还是以一个示例程序为例,这里直接上界面和代码:



界面xml文件如下:

?
主程序主要是完成两个函数,分别是存储数据和读取数据,首先看存储数据函数:

?
其中getSharedPreferences函数的第一个参数是sharePreferences文件的名字,得到sp对象之后需添加一个editor,然后就可以在里面put我们想要的内容了。

这里的putString,也可以换成putBoolean,putLong等,对应不同的数据类型。

只是注意这里和sqlite比较类似的是,数据存储最后都需要用commit函数来确定提交,如果程序在中途中断了的话,那之前put的一些内容都不会真正的存储进去。

然后我们看一下读取数据函数,非常简单:

?
那这个sharePreference到底是怎么存的呢? 我们用DDMS工具找到文件系统下/data/data/yourapp/目录下,可以看到一个shared_prefs的文件夹,我们所有的xml文件都是保存在这里的,比如我们刚才存储了一个hahah,打开看看:

?
可以看到对应到Java里面其实就是一个Map类型。

sharePreference的用途还是很广的,安卓系统下很多内容都是用它来存储,比如我们平时手机上的设置信息。我们打开settings下对应的shared_prefs来研究一下:

?
可以看到比如音效开关,字体大小等都是通过这一存储方式保存的。

MainActivity.java完整代码:

?
转载自:http://www.xgezhang.com/android_sharepreference.html

欢迎转载,请注明出处。

SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。

SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs目录下:

一个简单的存储代码如下:

SharedPreferences sharedPreferences = getSharedPreferences("wujay", Context.MODE_PRIVATE); //私有数据

Editor editor = sharedPreferences.edit();//获取编辑器

editor.putString("name", "wujaycode");

editor.putInt("age", 4);

editor.commit();//提交修改

生成的wujay.xml文件内容如下:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>

<map>

<string name="name">wujaycode</string>

<int name="age" value="4" />

</map>

分析以下几个方法:

一、getSharedPreferences(name,mode)

方法的第一个参数用于指定该文件的名称,名称不用带后缀,后缀会由Android自动加上;

方法的第二个参数指定文件的操作模式,共有四种操作模式。

四种操作模式分别为:

1. MODE_APPEND: 追加方式存储

2. MODE_PRIVATE: 私有方式存储,其他应用无法访问

3. MODE_WORLD_READABLE: 表示当前文件可以被其他应用读取

4. MODE_WORLD_WRITEABLE: 表示当前文件可以被其他应用写入

二、edit()方法获取editor对象

Editor editor = sharedPreferences.edit();

editor存储对象采用key-value键值对进行存放,editor.putString("name", "wujaycode");

通过commit()方法提交数据

与之对应的获取数据的方法:

SharedPreferences share=getSharedPreferences("Acitivity",Activity.MODE_WORLD_READABLE);

int i=share.getInt("i",0);

String str=share.getString("str","");

boolean flag=share.getBoolean("flag",false);

getString()第二个参数为缺省值,如果preference中不存在该key,将返回缺省值

如果你想要删除通过SharedPreferences产生的文件,可以通过以下方法:

File file= new File("/data/data/"+getPackageName().toString()+"/shared_prefs","Activity.xml");

if(file.exists()){

file.delete();

Toast.makeText(TestActivity.this, "删除成功", Toast.LENGTH_LONG).show(); }

三、访问其他应用中的Preference

如果要访问其他应用中的Preference,必须满足的条件是,要访问的应用的Preference创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE权限。

举例,假如有个<package name>为com.wujay.action下面的应用使用了下面语句创建了Preference,getSharedPreferences("wujay", Context.MODE_WORLD_READABLE),

现在要访问该Preferences:

首先,需要创建上面的Context,然后通过Context访问Preferences,访问preference时会在应用所在包下的shared_prefs目录找到preference:

Context otherAppsContext = createPackageContext("com.wujay.action", Context.CONTEXT_IGNORE_SECURITY);

SharedPreferences sharedPreferences = otherAppsContext.getSharedPreferences("wujay", Context.MODE_WORLD_READABLE);

String name = sharedPreferences.getString("name", "");

int age = sharedPreferences.getInt("age", 0);

如果不通过创建Context访问其他应用的preference,可以以读取xml文件方式直接访问其他应用preference对应的xml文件,如:

File xmlFile = new File(“/data/data/<package name>/shared_prefs/itcast.xml”);//<package name>应替换成应用的包名。
转载自:blog.csdn.net/wulianghuan/article/details/8501063

欢迎转载,请注明出处。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: