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种数据存储方式,但是由于存储的这些数据都是其应用程序私有的,所以如果需要在其他应用程序中使用这些 ...
随机推荐
- WPF 中定时器的使用
DispatcherTimer timer; private void Window_Loaded(object sender, RoutedEventArgs e) { timer = new Di ...
- python实战之原生爬虫(爬取熊猫主播排行榜)
""" this is a module,多行注释 """ import re from urllib import request # B ...
- 【论文阅读】ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
ShuffleNet: An Extremely Efficient Convolutional Neural Network for MobileDevices
- zoj 3827(2014牡丹江现场赛 I题 )
套公式 Sample Input 33 bit25 25 50 //百分数7 nat1 2 4 8 16 32 3710 dit10 10 10 10 10 10 10 10 10 10Sample ...
- 【LOJ】#2549. 「JSOI2018」战争
题解 仔细分析了一下,如果写个凸包+每次暴力半平面交可以得到70分,正解有点懵啊 然后用到了一个非常结论,但是大概出题人觉得江苏神仙一个个都可以手证的结论吧.. Minkowski sum 两个凸包分 ...
- 使用URLEncoder、URLDecoder进行URL参数的转码与解码
1. import java.net.URLDecoder; import java.net.URLEncoder; String strTest = "?=abc?中%1&2< ...
- [转]KMP算法
KMP算法应该是每一本<数据结构>书都会讲的,算是知名度最高的算法之一了,但很可惜,我大二那年压根就没看懂过~~~ 之后也在很多地方也都经常看到讲解KMP算法的文章,看久了好像也知道是怎么 ...
- C# 动态加载组件后怎么在开发环境中调试
动态加载组件 那就是简单的Assembly.Load动态加载dll而以.这网上资料也有不少.基本的思路基本上就是在本地上一个指定目录如[plugs]存在着一堆dll文件.主程序在初始运行时一般会把指定 ...
- ASCII UTF-8 编码
1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte). ...
- GPU安装
安装驱动 https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_d ...