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种数据存储方式,但是由于存储的这些数据都是其应用程序私有的,所以如果需要在其他应用程序中使用这些 ...
随机推荐
- pymongo创建索引
from database import db db_list = ["table1", "table2", "table3", " ...
- 当父级绑定了DataContext之内的数据源时,子级想重新绑回DataContext
<Grid x:Name="NewDeploymentObjectPanel" Background="White" DataContext=" ...
- java PriorityQueue(优先级队列)
先进先出描述了最典型的队列.队列规则是值在给定一组队列中的元素的情况下,确定下一个弹出队列的元素的规则,先进先出声明的是下一个元素应该是等待时间最长的元素 优先级队列声明下一个弹出的元素是最需要的元素 ...
- public private protect
public 公有 使用public意味着声明public之后的成员对每个人都是可用的 private 私有 除非必须公开底层实现细目,否则就应该将所有的域指定为private protect 继 ...
- Android仿苹果版QQ下拉刷新实现(二) ——贝塞尔曲线开发"鼻涕"下拉粘连效果
前言 接着上一期Android仿苹果版QQ下拉刷新实现(一) ——打造简单平滑的通用下拉刷新控件 的博客开始,同样,在开始前我们先来看一下目标效果: 下面上一下本章需要实现的效果图: 大家看到这个效果 ...
- .NetCore中使用ExceptionLess记录Polly中的操作异常日志
结合上一篇文章我写了一个demo测试下 重试2次 _polly.PollyRetry<Exception>(()=>_demoQuery.GetTestAOPAsync(), ); ...
- Javascript之继承(原型链方式)
1.原型链 原型链是JavaScript中继承的主要方法. 每个构造函数都拥有一个原型对象,原型对象都包含一个指向构造函数的指针(constructor),实例都包含一个指向原型对象的内部指针(__p ...
- PHP 文件路径获取文件名
物理截取 $file = '/www/htdocs/inc/lib.inc.php'; $filename = basename($file); echo $filename, '<br/> ...
- # Java反射2——获取实体所有属性和方法,并对属性赋值
1.一个普通的实体Person: private int id; private String name; private Date createdTime; ... //其它字段 // get se ...
- PHP-FPM 与 Nginx 的通信机制总结
PHP-FPM 介绍 CGI 协议与 FastCGI 协议 每种动态语言( PHP,Python 等)的代码文件需要通过对应的解析器才能被服务器识别,而 CGI 协议就是用来使解释器与服务器可以互 ...