skywang12345

导航

统计
  • 随笔 - 278
  • 文章 - 0
  • 评论 - 1353
  • 引用 - 0
 

SharedPreferences数据存储

 

版本 修改内容 日期 修改人
V1.0 原始版本 2013/2/20 skywang
       

 

 

 

 

1 SharedPreferences概括

SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长 整形、Int整形、String字符串型的保存。 

  

      它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。

      其存储位置在/data/data/<包名>/shared_prefs目录下。

      SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过SharedPreferences.Editor对象实现。

     

      实现SharedPreferences存储的步骤如下:   

      一、根据Context获取SharedPreferences对象   

      二、利用edit()方法获取SharedPreferences.Editor对象。   

      三、通过SharedPreferences.Editor对象存储key-value键值对数据。   

      四、通过commit()方法提交数据。

 

2 SharedPreferences接口说明

 

 

 

 

3 示例代码

View Code
package com.yarin.Android.HelloAndroid; 
 
import android.app.Activity;   
import android.os.Bundle;   
import android.util.Log; 
import android.content.SharedPreferences; 
import android.content.res.Resources; 
import java.util.Map; 
import java.util.Map.Entry; 
import java.util.Iterator; 
   
public class HelloAndroid extends Activity { 
     
    private static final String TAG = "skywang-->HelloAndroid"; 
 
    private static final String SP_FILE_NAME = "sp_test"; 
 
    private static final String SP_CHI_NAME     = "chi_name"; 
    private static final String SP_ENG_NAME  = "eng_name"; 
    private static final String SP_AGE           = "age"; 
    private static final String SP_CHINESE     = "chinese"; 
     
  private SharedPreferences sp = null; 
    private SharedPreferences.Editor editor = null; 
 
    private SharedPreferences.OnSharedPreferenceChangeListener listener =  
        new SharedPreferences.OnSharedPreferenceChangeListener() { 
            public void onSharedPreferenceChanged(SharedPreferences sp, String key) { 
                Log.d(TAG, "onSharedPreferenceChanged:key="+key); 
                if (SP_CHI_NAME.equals(key))  
                    Log.d(TAG, "onSharedPreferenceChanged:value="+sp.getString(key, null)); 
            } 
    }; 
         
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
         
        sp = getSharedPreferences(SP_FILE_NAME, MODE_PRIVATE); 
        // 监听 
        sp.registerOnSharedPreferenceChangeListener(listener); 
 
        // 编辑并保存数据 
            editor = sp.edit(); 
        editor.putString(SP_CHI_NAME, "kitty"); 
        editor.putString(SP_ENG_NAME, "nick01"); 
        editor.putString(SP_ENG_NAME, "nick02"); 
        editor.putInt(SP_AGE, 11); 
        editor.putBoolean(SP_CHINESE, true); 
        editor.commit(); 
 
        // 测试 
        Log.d(TAG, "chi_name="+sp.getString(SP_CHI_NAME, null)); 
        Log.d(TAG, "eng_name="+sp.getString(SP_ENG_NAME, null)); 
        Log.d(TAG, "contains(other_name)="+ sp.contains("other_name")); 
        Log.d(TAG, "other_name="+sp.getString("other_name", "none")); 
 
        // 测试getAll() 接口 
        Map<?,?> map = (Map<?,?>)sp.getAll(); 
        Log.d(TAG, "map.size()="+map.size()); 
        Iterator iterator=map.entrySet().iterator();     
        while(iterator.hasNext()){           
            Map.Entry<?, ?> entry= (Entry<?, ?>) iterator.next();     
            Log.d(TAG, "key:"+entry.getKey()+", value:"+entry.getValue());       
        } 
    } 
 
    @Override 
    public void onDestroy() { 
        super.onDestroy(); 
        if (sp!=null) 
            sp.unregisterOnSharedPreferenceChangeListener(listener); 
    } 
}

 

参考文献:

1,Android API文档

2,Android实现数据存储技术:http://www.cnblogs.com/hanyonglu/archive/2012/03/01/2374894.html

 

posted on 2013-02-28 23:07 如果天空不死 阅读(...) 评论(...) 编辑 收藏