- 浏览: 465285 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
wwwjiandan:
我现在遇到的问题是将Activity设置为非全屏,且andro ...
Android中软键盘弹出时底部菜单上移问题 -
zjhdreams:
求下载链接
Android 9Patch (NinePatch) -
wtjandjay:
受教了 .......
从程序员到项目经理 -
mr_zhang2011:
将博客搬至CSDN -
fyc0109:
为什么我传过去的值, 有的都不对呢, 顺序也是一样的.就是获得 ...
Android Parcelable序列化自定义类集合在Activity间传递
基于Android的移动存储SharedPreferences浅谈
作者:欧阳旻
在Android系统中提供了多种存储技术.通过这些存储技术可以将数据存储在各种存储介质上.比如sharedpreferences可以将数据保存着应用软件的私有存储区,这些存储区的数据只能被写入这些数据的软件读取.当然Android还支持文件存储、SQLite数据库和Content Provider。在这里我们将对sharedpreferences存储方式进行介绍。
SharedPreferences是一种轻量级的数据存储方式,学过Web开发的同学,可以想象它是一个小小的Cookie。它可以用键值对的方式把简单数据类型(boolean、int、float、long和String)存储在应用程序的私有目录下(data/data/包名 /shared_prefs/)自己定义的xml文件中。
SharedPreferences是以键值对来存储应用程序的配置信息的一种方式,它只能存储基本数据类型。一个程序的配置文件仅可以在本应用程序中使用,或者说只能在同一个包内使用,不能在不同的包之间使用。实际上sharedPreferences是采用了XML格式将数据存储到设备中,在DDMS中的File Explorer中的/data/data//shares_prefs下。
在所有的Android SDK存储技术中SharedPreferences技术是最容易理解和使用的,因为SharedPreferences处理的就是一个key–value对。比如保存产品的名称,就可以将key设为produceName,value为实际的产品名。
一、获取SharedPreferences对象的方法
(1)通过函数Context.getSharedPreferences(String name,int mode),其中name为本组件的配置文件名(如果想要与本应用程序的其他组件共享此配置文件,可以用这个名字来检索到这个配置文件),mode为操作模式,默认的模式为0或MODE_PRIVATE;返回值为SharedPreferences。
(2)通过函数Activity.getPreferences(int mode),其中配置文件仅可以被调用的Activity使用。mode为操作模式,默认的模式为0或MODE_PRIVATE;返回值为SharedPreferences。
二、使用SharedPreferences存取数据
保存key-value对一般要指定一个文件名,然后用类似putString的方法指定key和value。SharedPreferences也采用了同样的方法。使用SharedPreferences保存key-value对的步骤如下:
(1) 使用Activity类的getSharedPreferences方法获得SharedPreferences对象。其中存储key-value的文件名的名称由getSharedPreferences方法的第一个参数指定。
(2) 使用SharedPreferences接口的edit获得SharedPreferences.Editor对象。
(3) 通过SharedPreferences.Editor接口的putXXX方法保存key-value对。其中XXX表示value的不同数据类型。Boolean类型的value则是用putBoolean方法,字符串类型的则为putString方法。
(4) 通过SharedPreferences.Editor接口的commit方法保存key-value对。Commit方法相当于数据库事务中的提交(commit)操作。只有在事件结束后进行提交,才会将数据真正保存在数据库中。保存key-value也是一样。
三、数据的存储位置和格式
SharedPreferences将数据文件写在手机内存私有的目录中。在模拟器中测试程序可以通过ADT的DDMS透视图来查看数据文件的位置。
具体的存入和获取操作:
package org.sharedPreferences.test;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.RadioGroup;
public class ShaPreTestActivity extends Activity{
/** Called when the activity is first created. */
private final String PREFERENCES_NAME="survey";
private EditText etName;
private EditText etAge;
private RadioGroup sex;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
etName = (EditText)findViewById(R.id.name);
etAge = (EditText)findViewById(R.id.age);
sex = (RadioGroup)findViewById(R.id.sex);
SharedPreferences preferences = getSharedPreferences(PREFERENCES_NAME, Activity.MODE_PRIVATE);
etName.setText(preferences.getString("name", ""));
etAge.setText(preferences.getString("age", ""));
sex.check(preferences.getInt("sex", -1));
}
@Override
protected void onStop() {
//获得SharedPreferences对象
SharedPreferences MyPreferences = getSharedPreferences(PREFERENCES_NAME, Activity.MODE_PRIVATE);
//获得SharedPreferences.Editor
SharedPreferences.Editor editor = MyPreferences.edit();
//保存组件中的值
editor.putString("name", etName.getText().toString());
editor.putString("age", etAge.getText().toString());
editor.putInt("sex", sex.getCheckedRadioButtonId());
//提交保存的结果
editor.commit();
super.onStop();
}
}
代码写好后,你运行程序,你会发现,你输入完退出后,当你再次进入该程序的时候,你就会发现,你上次写的东东还在上面,而且是一模一样。
并且你会在data目录下找到一个名字叫survey.xml文件:
然后把它导出来,打开之后的格式以及内容如下所示:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<int name="sex" value="2131034115" />
<string name="name">name</string>
<string name="age">10</string>
</map>
从上面的内容可以看出,它是把那些字段都保存到了xml文件中,当你开启这个应用的时候,它会自动的去data下面找到相应的xml并且把相应的数据显示出来。
四、保存较为复杂的类型的数据
前面介绍的SharedPreferences只能保存简单类型的数据,例如,string,int等。如果需要存取比较复杂的数据类型比如类或者图像,则需要对这些数据进行编码,通常将其转换成Base64编码,然后将转换后的数据以字符串的形式保存在XML文件中。
五、设置数据文件的访问权限
因为Android系统并不是完全的创新的操作系统,而是在linux内核基础上发展起来的一个移动操作系统,所以android还有一些linux的基本特性。我们用getsharedPreferences方法获得sharedpreferences对象,getsharedPreferences方法的第2个参数值使用到了Activity.MODE_PRIVATE常量。除了这个常量以外还可以使用另外3个常量。这4个常量用于指定文件的建立模式。他们一个重要的功能就是设置文件的属性,从而可以设置数据文件的访问权限。
六、可以保存设置的Activity:PreferenceActivity
由于SharedPreferences可以很容易的保存key-value对,因此,通常使用SharedPreferences保存配置信息。不过Android SDK提供了更为容易的方法来设计配置界面,并且可以透明地保存配置信息。这就是PreferenceActivity。
PreferenceActivity是Activity的子类,该类封装了SharedPreferences。因此,PreferenceActivity的所有子类都拥有保存key-value对的能力。
PreferenceActivity提供了一些常用的设置项,这些设置项可以满足大多数的配置界面的要求。与组件一样,这些配置项既可以从XML文件创建,也可以从代码创建。比较常用的有:
CheckboxPreference:对应标签。该设置项会创建一个CheckBox组件。
EditTextPreference:对应标签。单击该设置项会弹出一个带EditText组件的对话框。
ListPreference:对应标签。单击该设置项会弹出带ListView组件的对话框。
发表评论
-
android Log.isLoggable方法的使用
2014-06-06 15:35 3006android 动态控制logcat日志开关,通过Log. ... -
View not attached to window manager
2013-01-10 11:55 1080View not attached to window man ... -
代码设置android:icon,android:label
2013-01-05 15:26 7997requestWindowFeature( Window.F ... -
Android项目为一个apk设置多个ICON图标和执行入口
2013-01-05 12:13 3880Android开发中,一个工程对应一个AndroidManif ... -
Intent跳转到系统应用中的拨号界面、联系人界面、短信界面及其他
2012-12-04 12:15 01:调用系统发送短信界面 Uri smsT ... -
Android 源码目录结构详解
2012-11-22 17:20 1470这是Android2.1的源代码的 ... -
如何获取android源代码
2012-07-10 17:50 2741如何获取android源代码 研究 ... -
Android uses-permission大全
2012-06-12 17:33 1072android.permission.ACCESS_CHE ... -
Android 应用程序基础(Application Fundamentals)
2012-05-23 17:42 1272Android 应用程序基础(Application Fun ... -
转Android 音乐频谱实现
2012-02-18 23:35 0最近由于需要实现音乐频谱,所以今天就为大家普及一下。 这里实现 ... -
android VideoView本工程mp4文件
2012-01-09 18:42 2706最近在做一个demo,要求播放视频,记录一下。使用的是Vid ... -
关于android播放mp3与歌词同步问题收集
2012-01-09 17:57 1690关于android播放mp3与歌词同步问题收集,有时间再试。 ... -
android使用MediaPlayer播放音乐文件时遇到的问题
2012-01-09 17:38 18385把mp3文件放在Assets文件夹里,然后用MediaPlay ... -
android资源目录---assets与res/raw的不同
2012-01-05 11:49 2382android资源目录---assets与 ... -
Android 的cpu硬盘 内存 网络设置 系统信息 硬件信息
2012-01-04 10:56 1620转载 http://www.cnmsdn.com/html/2 ... -
使用 Android Compatibility Package 来简化开发工作
2012-01-04 10:12 1436转载 http://www.cnmsdn.com/html/2 ... -
Android 9Patch (NinePatch)
2011-12-26 16:06 45411:介绍 NinePatch图片以*.9.png结尾,和普通 ... -
Windows平台下Android源码的下载
2011-12-21 11:06 1263Windows平台下Android源码的下载 ... -
改变MenuItem默认背景
2011-12-07 19:58 1447@Override public boolean onCre ... -
Android横屏竖屏切换
2011-11-10 18:20 107转载 http://blog.csdn.net/leesido ...
相关推荐
Android开发者们长期以来一直依赖SharedPreferences作为轻量级的数据存储解决方案,它的简单易用性使其在小规模数据存储方面受到了广泛欢迎。然而,随着应用程序复杂性的增加,SharedPreferences的局限性逐渐暴露...
总之,Android的SharedPreferences是开发者方便快捷地保存应用内小量数据的工具,对于设置和管理用户密码,特别是应用的初始密码,提供了简单而有效的解决方案。在实际开发中,结合适当的加密策略,可以确保用户数据...
Android SharedPreferences应用 实现本地注册登陆 功能简单易懂(实例) http://blog.csdn.net/h1028962069/article/details/9129851 文章代码
SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能...
在Android开发中,SharedPreferences是一个轻量级的数据存储方式,用于保存应用中的小量、简单的数据,如用户设置、应用状态等。它提供了键值对(key-value pairs)的存储,支持基本数据类型如布尔型、整型、浮点型...
在这个小例子中,我们将探讨如何在Android应用中使用SharedPreferences来保存键值对。 首先,我们需要了解SharedPreferences的基本概念。SharedPreferences对象提供了一种接口,让我们可以创建、修改和读取存储在...
实现这一功能的关键在于持久化用户的登录状态,而SharedPreferences正是Android提供的一种轻量级的数据存储机制,适用于保存简单的键值对数据。本文将详细介绍如何在Android中使用SharedPreferences实现自动登录。 ...
SharedPreferences是Android系统提供的一种轻量级的数据存储方式,主要用于应用程序保存一些简单的配置信息,如用户设置、应用状态等。它不适用于存储大量的数据,但对于小规模的数据存储需求,SharedPreferences...
在Android开发中,SharedPreferences是系统提供的一种轻量级的数据存储方式,主要用于保存应用程序中的简单配置数据,如布尔值、整型、浮点型、字符串等。由于它的操作简便且易于理解,因此在需要持久化小量数据时...
在Android开发中,SharedPreferences是一个非常重要的轻量级数据存储机制,用于存储一些简单的配置信息,如用户设置、登录状态等。它提供了一种键值对的形式来保存数据,并且可以跨活动(Activity)共享。本篇文章将...
在这个"android SharedPreferences"的主题中,我们将深入探讨SharedPreferences的工作原理、使用方法以及其在实现简单登录功能中的应用。 SharedPreferences是Android提供的一种轻量级的数据存储方式,它以键值对的...
在本文中,我们将深入探讨如何在Android中使用SharedPreferences以及它的优点和注意事项。 一、SharedPreferences的基本使用 1. 获取SharedPreferences对象 要使用SharedPreferences,首先需要获取其对象。通常在...
在Android应用开发中,SharedPreferences是Android提供的一种轻量级的数据存储机制,用于存储应用程序的简单配置数据,如用户设置、应用的状态信息等。这个压缩包“Android应用源码之SharedPreferences.zip”很可能...
SharedPreferences是Android系统提供的一种轻量级的数据存储方式,主要用于存储应用程序的简单配置信息,如布尔值、整型、浮点型、字符串等基本类型及其数组。通常,SharedPreferences数据是私有的,即每个应用只能...
在Android应用开发中,SharedPreferences是Android提供的一种轻量级的数据存储方式,主要用于存储一些简单的配置信息,如用户偏好设置、应用状态等。它基于XML文件,提供了键值对的存储方式,非常适合用来保存一些...
SharedPreferences是Android系统提供的一种轻量级的数据存储方式,它主要用于应用程序中简单数据的持久化存储,例如用户设置、应用状态等。SharedPreferences采用键值对的形式保存数据,支持基本类型如布尔、整型、...
在Android开发中,SharedPreferences是应用数据...综上所述,SharedPreferences是Android应用中轻量级的数据存储解决方案,尤其适合存储简单配置。通过理解其工作原理和遵循最佳实践,我们可以更有效地利用这一工具。
在Android应用开发中,SharedPreferences是Android提供的一种轻量级的数据存储方式,主要用于存储应用程序的配置信息或者简单数据。它提供了一种键值对的方式,使得数据的存储、删除和读取变得非常方便。下面我们将...
SharedPreferences用于简单的数据存储,是通过“name-value对”的机制存储数据,可以存储一些基本的数据类型包括:Boolean,string,float,long和integer类型。 数据是存储在XML文件中的。