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

Android 数据存储01之SharedPreferences的更多相关文章

  1. Android数据存储方式之SharedPreferences

    Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数.使用SharedPreferences保存数据,其背后是用xml文件存放数 ...

  2. Android数据存储方式--SharedPreferences

    Android数据存储方式有如下四种:SharedPreferences.存储到文件.SQLite数据库.内容提供者(Content provider).存储到网络服务器. 本文主要介绍一下Share ...

  3. Android数据存储-通过SharedPreferences实现记住密码的操作

    在Android中登陆中,为了实现用户的方便,往往需要根据用户的需要进行记住密码的操作,所以,在Android数据存储中SharedPreferences恰恰可以实现这一点 下面,小编将带领大家通过S ...

  4. 10、Android数据存储

    课程目标: 掌握Android中数据存储的几种方式 熟练使用PreferenceActivity&PreferenceScreen做专业的Setting功能 熟练使用SQLite3来存储数据 ...

  5. Android - 数据存储 -存储键值对

    如果你有少量的键值数据需要存储,可以使用SharedPreferencesAPI.SharedPreferences对象指向一个包含键值对的文件并且提供了一些简单的方法来读取它们.每个SharedPr ...

  6. Android数据存储五种方式

    1 使用SharedPreferences存储数据:常用于做本地缓存 2 文件存储数据:(1)data/data/<package name>/files目录内   (2)SDCard内 ...

  7. Android数据存储:Shared Preferences

    Android数据存储之SharedPreferences 在Android系统中提供了多种存储技术.通过这些存储技术可以将数据存储在各种存储介质上, Android 为数据存储提供了如下几种方式:1 ...

  8. 【Android开发日记】之入门篇(七)——Android数据存储(上)

    在讲解Android的数据源组件——ContentProvider之前我觉得很有必要先弄清楚Android的数据结构. 数据和程序是应用构成的两个核心要素,数据存储永远是应用开发中最重要的主题之一,也 ...

  9. Android数据存储之Shared Preferences共享数据存储

    Android数据存储之Shared Preferences共享数据存储 在Android中一共提供了4种数据存储方式,但是由于存储的这些数据都是其应用程序私有的,所以如果需要在其他应用程序中使用这些 ...

随机推荐

  1. 『实践』Android之短信验证码(用的Mob短信验证)

    1.参考资料 Mob网站:http://www.mob.com/ Mob在Github上的例子:https://github.com/MobClub/SMSSDK-for-Android 教程:htt ...

  2. springcloud中Feign配置详解

    Spring Cloud中Feign配置详解 到目前为止,小伙伴们对Feign的使用已经掌握的差不多了,我们在前文也提到Feign是对Ribbon和Hystrix的整合,那么在Feign中,我们要如何 ...

  3. Nginx基本配置文件

    Nginx基本配置文件 1. 基本配置文件 /etc/nginx/nginx.conf # nginx运行的用户 user nginx; # nginx进程数,建议设置为等于CPU总核心数. work ...

  4. CAS5.2x单点登录(二)cas服务器连接数据库

    前面一节应该已经告诉大家如何搭建cas的服务器了,可是搭建好能用吗?我们现在的用户验证是在哪呢?哪个默认的用户名和密码有是在哪呢? 本节就讲一下如何使用cas服务器连接我们自己的用户数据库,毕竟没有哪 ...

  5. IdentityServer4结合AspNetCore.Identity实现登录认证踩坑填坑记录

    也可以自定义实现,不使用IdentityServer4.AspNetIdentity这个包,当然还要实现其他接口IResourceOwnerPasswordValidator. IProfileSer ...

  6. java文件压缩与解压

    感谢“zlex.dongliang@gmail.com”.主要代码如下: import java.io.BufferedInputStream; import java.io.File; import ...

  7. 洛谷.3835.[模板]可持久化平衡树(fhq treap)

    题目链接 对每次Merge(),Split()时产生的节点都复制一份(其实和主席树一样).时间空间复杂度都为O(qlogq).(应该更大些 因为rand()?内存真的爆炸..) 对于无修改的操作实际上 ...

  8. SHOI2019旅游记

    题外话 为什么不更ZJOI day1的游记呢.... 因为考挂自闭了不想更.等day2考完再说咕咕咕 还是更个SHOI旅游记吧!反正不是自家省选,玩得真开心~~~ day0 SH好热好热啊,感觉到夏天 ...

  9. 【BZOJ-4184 】 Shallot 线段树按时间分治 + 线性基

    4184: shallot Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 356  Solved: 180[Submit][Status][Discu ...

  10. Code Forces 543A Writing Code

    题目描述 Programmers working on a large project have just received a task to write exactly mm lines of c ...