Android开发之数据存储之一:haredPreferences【免费提供源码下载】

来源:互联网 发布:掌盟软件下载 编辑:程序博客网 时间:2024/06/05 17:46

 Android开发之数据存储之(一)【haredPreferences】

 

很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友。对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果是j2se应用,我们会采用properties属性文件进行保存。如果是Android应用,我们最适合采用什么方式保存软件配置参数呢?

Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs目录下:

 

下面我们通过一个简单的小例子来学习:

我们在XML下定义两个TextView和两个EditText,代码如下:

<TextView  android:id="@+id/view1"    android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="用户名"    /><EditTextandroid:id="@+id/userame"android:layout_width="fill_parent"android:layout_height="wrap_content"/><TextView  android:id="@+id/view2"    android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="密码"    /><EditTextandroid:id="@+id/password"android:layout_width="fill_parent"android:layout_height="wrap_content"android:inputType="textPassword"/>

 

然后我们在SharedActivity.Java中的代码:

private static final String SETTING_INFOS = "SETTING_Infos";private static final String NAME = "NAME";private static final String PASSWORD = "PASSWORD";private EditText username=null;private EditText password=null;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        username=(EditText) findViewById(R.id.userame);        password=(EditText) findViewById(R.id.password);        //获取了一个SharedPreferences对象        SharedPreferences preferences=getSharedPreferences(SETTING_INFOS, 0);        //读取SharedPreferences存储文件的内容        String nameString=preferences.getString(NAME, "");        String pwd=preferences.getString(PASSWORD, "");        username.setText(nameString);        password.setText(pwd);            }        @Overrideprotected void onPause() {super.onPause();//获取对象,第一个参数为保存xml文件的文件名,第二个参数是保存文件的操作模式SharedPreferences sharedPreferences=getSharedPreferences(SETTING_INFOS, 0);//先调用edit使其处于可编辑状态,然后写进去,再提交sharedPreferences.edit().putString(NAME,username.getText().toString()).putString(PASSWORD, password.getText().toString()).commit();}////@Override//protected void onStop() {//super.onStop();//SharedPreferences sharedPreferences=getSharedPreferences(SETTING_INFOS, 0);//sharedPreferences.edit()//.putString(NAME,username.getText().toString())//.putString(PASSWORD, password.getText().toString())//.commit();////}


 

注释的内容是写在onStop中的,需要在完全退出程序的时候才能执行,写在onPuse中的,只要切换到别的页面的时候就会保存。

如下图,我们输入数据

然后我们来到DDMS下面,然后找到File Explorer下面的data下找到以我们包名命名的文件夹,在里面的share_prefs文件夹下面的xml文件即为保存数据的文件,导出后用EditPlus打开来看下:

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

<map>

<string name="PASSWORD">vvvvvvvghjnb</string>

<string name="NAME">dbkkk </string>

</map>

源码下载地址