SharedPreference

来源:互联网 发布:数据标准 编辑:程序博客网 时间:2024/05/23 19:14
SharedPreference是Android提供的一种轻量级的数据存储方式,主要用来存储一些简单的配置信息,例如,默认欢迎语,登录用户名和密码等。其以键值对的方式存储,使得我们能很方便进行读取和存入。
SharedPreference 文件保存在/data/data/<package name>/shared_prefs 路径下(如/data/data/com.android.alarmclock/shared_prefs/com.android.text_preferences.xml),通过cat命令可以查看文件,如:

通过Activity自带的getSharedPreferences方法,可以得到SharedPreferences对象。
public abstract SharedPreferences getSharedPreferences (String name, int mode);
name:表示保存后 xml 文件的名称
mode:表示 xml 文档的操作权限模式(私有,可读,可写),使用0或者MODE_PRIVATE作为默认的操作权限模式。

1.数据读取:
通过SharedPreferences对象的键key可以获取到对应key的键值。对于不同类型的键值有不同的函数:getBoolean,getInt,getFloat,getLong.
public abstract String getString (String key, String defValue);
2.数据存入:
数据的存入是通过SharedPreferences对象的编辑器对象Editor来实现的。通过编辑器函数设置键值,然后调用commit()提交设置,写入xml文件。
public abstract SharedPreferences.Editor edit ();
public abstract SharedPreferences.Editor putString (String key, String value);
public abstract boolean commit ();

下面一个实例显示一个TextView,上面显示用户使用该应用的次数。

效果图如下:

源代码如下:

main.xml:

[xhtml] view plaincopyprint?
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent">
  6. <TextView
  7. android:id="@+id/textview"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="@string/hello"/>
  11. </LinearLayout>

TestSharedPreferences.java:

[c-sharp] view plaincopyprint?
  1. package com.android.test;
  2. import android.app.Activity;
  3. import android.content.SharedPreferences;
  4. import android.os.Bundle;
  5. import android.preference.PreferenceManager;
  6. import android.widget.TextView;
  7. public class TestSharedPreferences extends Activity {
  8. /** Called when the activity is first created. */
  9. @Override
  10. public void onCreate(Bundle savedInstanceState) {
  11. super.onCreate(savedInstanceState);
  12. setContentView(R.layout.main);
  13. SharedPreferences mSharedPreferences = getSharedPreferences("TestSharedPreferences", 0);
  14. // SharedPreferences mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
  15. int counter = mSharedPreferences.getInt("counter", 0);
  16. TextView mTextView = (TextView)findViewById(R.id.textview);
  17. mTextView.setText("This app has been started " + counter +" times.");
  18. SharedPreferences.Editor mEditor = mSharedPreferences.edit();
  19. mEditor.putInt("counter", ++counter);
  20. mEditor.commit();
  21. }
  22. }

几点说明:

  1. SharedPreferences的获取有两种方法:一是上面提到的通过Activity自带(本质来讲是Context的)的getSharedPreferences方法,可以得到SharedPreferences对象。这种方法的好处是可以指定保存的xml文件名。另一种是通过PreferenceManager.getSharedPreferences(Context)获取SharedPreferences对象。这种方法不能指定保存的xml文件名,文件名使用默认的:<package name>+"_preferences.xml"的形式,不过如果在一个包里面采用这种方式需要保存多个这样的xml文件,可能会乱掉。建议采用第一种指定xml文件名的形式。
  2. 数据的存入必须通过SharedPreferences对象的编辑器对象Editor来实现,存入(put)之后与写入数据库类似一定要commit。
原创粉丝点击