什么是SharedPreferences存储

  • 一种轻量级的数据保存方式
  • 类似于我们常用的ini文件,用来保存应用程序的一些属性设置、较简单的参数设置
  • 保存现场:保存用户所作的修改或者自定义参数设定,当再次启动程序后回复上次退出时的状态。
  • 将NVP(Name/Value Pair,名称/值对)保存在Android的文件系统中(XML文件),完全屏蔽的对文件系统的操作过程。
  • 开发人员仅是通过调用SharedPreferences的API对NVP进行保存和读取
  • 除数据保存,还提供数据共享功能。
  • 主要支持3种数据访问模式(读写权限)

    私有(MODE_PRIVATE):仅创建程序可读、写

    全局读(MODE_WORLD_READABLE):创建程序可读

    写, 其他程序可读不可写

    全局写(MODE_WORLD_WRITEABLE):创建程序和

    其他程序都可写,但不可读!

代码demo

public static final String PREFERENCE_PACKAGE ="edu.hrbeu.SimplePreferenceDemo";
public static int MODE = Context.MODE_WORLD_READABLE +Context.MODE_WORLD_WRITEABLE;
public static final String PREFERENCE_NAME = "SaveSetting"; public void onCreate(Bundle savedInstanceState) {
Context c = null;
try {
//获取SimplePreferenceDemo示例的Context
c = this.createPackageContext(PREFERENCE_PACKAGE,
Context.CONTEXT_IGNORE_SECURITY);
}
catch (NameNotFoundException e) {e.printStackTrace();}
//将正确的SharedPreferences名称传递给函数
SharedPreferences sharedPreferences =
c.getSharedPreferences( PREFERENCE_NAME, MODE );
//读取NVP
String name = sharedPreferences.getString("Name","Tom");
int age = sharedPreferences.getInt("Age", 20);
float height = sharedPreferences.getFloat("Height",);
}

使用方法

1. 定义访问模式

public static int MODE = MODE_PRIVATE
//定义为私有模式
public static int MODE = Context.MODE_WORLD_READABLE +
Context.MODE_WORLD_WRITEABLE
//访问模式可组合:既可以全局读,也可以全局写,将两种模式组合(+号或|号) 成下面的方式:

2. 定义SharedPreferences的名称

  • 该名称与Android文件系统中保存的XML文件同名
  • (保存在:/data/data/<应用名>/shared_prefs/)
  • 相同名称的NVP内容,都会保存在同一个文件中
public static final String PREFERENCE_NAME = "SaveSetting";

3. 创建SharedPreferences对象

将访问模式和名称作为参数,传递到getSharedPreferences()函数,并获得SharedPreferences对象

SharedPreferences sharedPreferences =
getSharedPreferences ( PREFERENCE_NAME, MODE );

4.保存和修改

  • 通过SharedPreferences.Editor类进行修改
  • 调用commit()函数保存修改内容

    – 支持数据类型:整型、 布尔型、 浮点型和长整型等
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("Name", "Tom");
editor.putInt("Age", 20);
editor.putFloat("Height", (float)163.00 );
editor.commit();

5.读取数据

  • 通过get()函数获取NVP

    – 第1个参数是NVP的名称(Name)

    – 第2个参数是在无法获取到数值的时候使用的缺省值
SharedPreferences sharedPreferences =
getSharedPreferences(PREFERENCE_NAME, MODE);
String name = sharedPreferences.getString("Name","Default Name");
int age = sharedPreferences.getInt("Age", 20);

6.数据保存位置

在android studio 下方的logcat栏的最右边有一个Device File Explorer可以查看 虚拟机的文件

文件存储在以下目录

/data/data/<package name>/shared_prefs/

7. 共享条件

  • 共享者需要将SharedPreferences的访问模式设置为全局读或全局写
  • 访问者需要知道共享者的包名称和SharedPreferences的名称,以通过Context获得SharedPreferences对象
  • 访问者需要确切知道每个数据的名称和数据类型,用以正确读取数据

Android SharedPreferences存储详解的更多相关文章

  1. Android系统目录结构详解

    Android系统基于linux内核.JAVA应用,算是一个小巧精致的系统.虽是开源,但不像Linux一般庞大,娇小可亲,于是国内厂商纷纷开发出自己基于Android的操作系统.在此呼吁各大厂商眼光放 ...

  2. Android SDK Manager详解

    Android基础知识——Android SDK Manager详解   做Android开发时,免不了使用Android SDK Manager,安装需要的sdk版本.buildTools版本等等. ...

  3. Android中Context详解 ---- 你所不知道的Context(转)

    Android中Context详解 ---- 你所不知道的Context(转)                                               本文出处 :http://b ...

  4. Android 自定义 View 详解

    View 的绘制系列文章: Android View 绘制流程之 DecorView 与 ViewRootImpl Android View 的绘制流程之 Measure 过程详解 (一) Andro ...

  5. Android API Levels 详解

    Android API Levels 当你开发你的Android应用程序时,了解该平台API变更管理的基本方法和概念是很有帮助的.同样的,知道API级别标识以及该标识如何保障你的应用与实际硬件设备相兼 ...

  6. android:ToolBar详解

    android:ToolBar详解(手把手教程) 泡在网上的日子 发表于 2014-11-18 12:49 第 124857 次阅读 ToolBar 42 来源 http://blog.mosil.b ...

  7. Android之canvas详解

    首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, y ...

  8. 【转】Android Canvas绘图详解(图文)

    转自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1212/703.html Android Canvas绘图详解(图文) 泡 ...

  9. Android 核心分析 之八Android 启动过程详解

    Android 启动过程详解 Android从Linux系统启动有4个步骤: (1) init进程启动 (2) Native服务启动 (3) System Server,Android服务启动 (4) ...

随机推荐

  1. Active Directory - Creating Public and Personnel Share Folders via Script

    Create and save the following scripts on the DC folder \\Winsever2019\sysvol\pandabusiness.local\scr ...

  2. 2万字长文包教包会 JVM 内存结构 保姆级学习笔记

    写这篇的主要原因呢,就是为了能在简历上写个"熟悉JVM底层结构",另一个原因就是能让读我文章的大家也写上这句话,真是个助人为乐的帅小伙....嗯,不单单只是面向面试学习哈,更重要的 ...

  3. Makefile中的奇葩字符

    % : Makefile规则通配符,一般出现在目标或是依赖中 * : shell命令中的通配符,一般出现在命令中 $@:目标的名字 $^:所有依赖的名字 $<:第一个依赖的名字 $?:所有依赖中 ...

  4. 17 个 Python 特别实用的操作技巧,记得收藏!

    Python 是一门非常优美的语言,其简洁易用令人不得不感概人生苦短.在本文中,作者 Gautham Santhosh 带我们回顾了 17 个非常有用的 Python 技巧,例如查找.分割和合并列表等 ...

  5. 【揭秘】阿里测试框架,各大CTO良心力荐

    自动化测试因其节约成本.提高效率.减少手动干预等优势已经日渐成为测试人员的“潮流”,从业人员日益清楚地明白实现自动化框架是软件自动化项目成功的关键因素之一.本篇文章将从 什么是真正的自动化测试框架.自 ...

  6. Python后端日常操作之在Django中「强行」使用MVVM设计模式

    扫盲 首先带大家了解一下什么是MVVM模式: 什么是MVVM?MVVM是Model-View-ViewModel的缩写. MVVM是MVC的增强版,实质上和MVC没有本质区别,只是代码的位置变动而已 ...

  7. 虚拟机 NAT 网络静态ip配置记录

    环境 VMware 15.5.5 build-16285975 centos7 虚拟网络编辑器配置 位置 编辑 --> 虚拟网络编辑器 示例 以下以 192.168.18.0 网段ip为例,实际 ...

  8. vj map

    /* * 换行好烦人呀! */ #include <iostream> #include <map> #include <string> using namespa ...

  9. mybatis之if判断

    今天使用mybatis开发公司中台项目踩的一个坑,分享并记录一下 踩坑前因:因项目中比较多状态字段,用了大量的Integer 0和1进行判断 在功能做完后只是粗略的点了下觉得没多大问题(来自程序员强大 ...

  10. MacOS 键盘符号和修饰键说明

    原文链接:https://www.cnblogs.com/exmyth/p/5949192.html   Mac键盘符号和修饰键说明 ⌘ Command ⇧ Shift ⌥ Option ⌃ Cont ...