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 示例代码
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的更多相关文章
- Android数据存储方式之SharedPreferences
Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数.使用SharedPreferences保存数据,其背后是用xml文件存放数 ...
- Android数据存储方式--SharedPreferences
Android数据存储方式有如下四种:SharedPreferences.存储到文件.SQLite数据库.内容提供者(Content provider).存储到网络服务器. 本文主要介绍一下Share ...
- Android数据存储-通过SharedPreferences实现记住密码的操作
在Android中登陆中,为了实现用户的方便,往往需要根据用户的需要进行记住密码的操作,所以,在Android数据存储中SharedPreferences恰恰可以实现这一点 下面,小编将带领大家通过S ...
- 10、Android数据存储
课程目标: 掌握Android中数据存储的几种方式 熟练使用PreferenceActivity&PreferenceScreen做专业的Setting功能 熟练使用SQLite3来存储数据 ...
- Android - 数据存储 -存储键值对
如果你有少量的键值数据需要存储,可以使用SharedPreferencesAPI.SharedPreferences对象指向一个包含键值对的文件并且提供了一些简单的方法来读取它们.每个SharedPr ...
- Android数据存储五种方式
1 使用SharedPreferences存储数据:常用于做本地缓存 2 文件存储数据:(1)data/data/<package name>/files目录内 (2)SDCard内 ...
- Android数据存储:Shared Preferences
Android数据存储之SharedPreferences 在Android系统中提供了多种存储技术.通过这些存储技术可以将数据存储在各种存储介质上, Android 为数据存储提供了如下几种方式:1 ...
- 【Android开发日记】之入门篇(七)——Android数据存储(上)
在讲解Android的数据源组件——ContentProvider之前我觉得很有必要先弄清楚Android的数据结构. 数据和程序是应用构成的两个核心要素,数据存储永远是应用开发中最重要的主题之一,也 ...
- Android数据存储之Shared Preferences共享数据存储
Android数据存储之Shared Preferences共享数据存储 在Android中一共提供了4种数据存储方式,但是由于存储的这些数据都是其应用程序私有的,所以如果需要在其他应用程序中使用这些 ...
随机推荐
- php递归函数细节
<?php /** *php递归函数细节 *从1到5的阶乘 * */ header("Content-Type:text/html;charset=utf-8"); func ...
- jstack查看Java堆栈信息
命令 jps 查看进程id jstack 1234 查看该进程的线程堆栈信息 对于每个线程,都有如下信息: 线程名,如“main”线程属性(如果是Daemon线程,会有Daemon标识,否则,什么都没 ...
- Shiro:ajax的session超时处理
本问题解决方案参照网站多篇文章融合解决,在此表示感谢! 环境:springboot+shiro+jquery-easyui 问题:在ajax请求时,如果此时session已经失效,系统没有自动跳转到登 ...
- OS X 10.11:如何完全停用Time Machine。
家里的2010年21.5英寸iMac越来越慢,用HFS+分区的1.5TB外置硬盘进行备份时,100G数据经常两三个小时还不能备份完.Time Machine虽然方便,但效率太低,不得不停用. 1. 要 ...
- 使用crontab命令添加计划任务
Ubuntu 16.04, 计划任务 就是 有(时间)计划地执行(做)任务,有计划 包括 定时执行(在哪些时间点执行任务).按照周期执行(每隔多少时间执行任务). 那么,什么是任务呢?就是 自己想要干 ...
- Canvas 3D球形文字云动画特效
Canvas 3D球形文字云动画特效 效果图: 代码如下,复制即可使用: (适用浏览器:360.FireFox.Chrome.Opera.傲游.搜狗.世界之窗. 不支持Safari.IE8及以下浏览器 ...
- mysql连接池模块
如果不想程序在查询数据时卡死或等待过长时间,一般不推荐在node中开启一个连接后全部查询都用这个链接并且不关闭.因为node里面的mysql不像php里的那样会在完成查询后断开,只要不主动断开,连接一 ...
- nodejs mysql 执行多条sql语句
执行多条查询语句 为了安全起见,默认情况下是不允许执行多条查询语句的.要使用多条查询语句的功能,就需要在创建数据库连接的时候打开这一功能: var connection = mysql.createC ...
- php生成随机数
生成1-10之间的随机数,不重复. 方法一:用shuffle函数. <?php $arr=range(1,10); shuffle($arr); foreach($arr as $values) ...
- GitLab备份的创建与恢复
使用Gitlab一键安装包安装Gitlab非常简单, 同样的备份恢复与迁移也非常简单. 使用一条命令即可创建完整的Gitlab备份: gitlab-rake gitlab:backup:create使 ...