SharedPreferences

来源:互联网 发布:json.stringify() 编辑:程序博客网 时间:2024/04/29 02:54
 

Android的数据存储与访问有一下几中方式:

*文件
*SharedPreferences(参数)
*SQLite数据库
*内容提供者(Content provider
*网络

下面我们来谈谈SharedPreferences(参数)存储方式的使用

很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友。对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果是j2se应用,我们会采用properties属性文件或者xml进行保存。如果是Android应用,我们最适合采用什么方式保存软件配置参数呢?Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs目录下:


因为 很多程序都有这个需要 所以自己把该功能集成并列出一些接口函数 以后用的话 会方便很多 这个类名命名为SharedPreferencesHelper

java代码

-----------------------------------------------------------------------

1.创建

  SharedPreferences sp;   

  SharedPreferences.Editor editor;  

  Context context;       

    public SharedPreferencesHelper(Context c,String name){  

        context = c;  

        sp = context.getSharedPreferences(name, 0);  

        editor = sp.edit();  

    }  

2.以键值<String Key,String Value> 的方式加入数据

public void putValue(String key, String value){  

   editor = sp.edit();  

   editor.putString(key, value);  

   editor.commit();  

    }  

3.以 String Key 为索引来取出数据

public String getValue(String key){  

      return sp.getString(key, null);  

    } 

----------------------------------------------------------------------------------------------------------------------------------------------------

如何使用SharedPreferences呢:


/*
* to access from: data/data/com.android.SharedPreferences/share_prefs
*/
public class SharedPreferencesUsage extends Activity {
public final static String COLUMN_NAME ="name";
public final static String COLUMN_MOBILE ="mobile";

SharedPreferencesHelper sp;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);

sp = new SharedPreferencesHelper(this, "contacts");

//1. to store some value
  sp.putValue(COLUMN_NAME, "GUANGZHOU");  
sp.putValue(COLUMN_MOBILE, "123456789");


//2. to fetch the value
String name = sp.getValue(COLUMN_NAME);
String mobile = sp.getValue(COLUMN_MOBILE);

TextView tv = new TextView(this);
tv.setText("NAME:"+ name + "\n" + "MOBILE:" + mobile);

setContentView(tv);
}
}

----------------------------------------------------------------------------------------------------------------------------------------------------

XML代码

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

<map>  

<string name="mobile">123456789</string>  

<string name="name">GUANGZHOU</string>  

</map>