zoukankan      html  css  js  c++  java
  • Android 数据存储01之SharedPreferences

    Android 数据存储01之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 示例代码

    示例说明:编辑一个activity,并通过SharedPreferences保存数据。实现数据的保存、修改、数据改动通知等功能。
     
    示例代码
    package com.skywang.data;
    
    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 SharedReferenceTest 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"; 
        
        // SharedPreferences对象    
        private SharedPreferences sp = null;
        // SharedPreferences编辑器
        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.shared_reference_test); 
             
            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

  • 相关阅读:
    单表查询
    多表查询
    (Redis基础教程之七)如何使用Redis中的Hashes
    (Python基础教程之三)Python代码中添加注释
    (Python基础教程之二)在Sublime Editor中配置Python环境
    (Redis基础教程之六)如何使用Redis中的List
    (Redis基础教程之五)如何在Redis中操作字符串
    (Redis基础教程之一)如何在Ubuntu 18.04上安装和保护Redis
    Redis数据类型简介(十分钟快速学习Redis)
    如何使用,操作Redis数据库
  • 原文地址:https://www.cnblogs.com/skywang12345/p/3165652.html
Copyright © 2011-2022 走看看