1.SharedPreferences存储

SharedPreferences时使用键值对的方式来存储数据的,也就是在保存一条数据时,需要给这条数据提供一个对应的键,这样在读取的时候就可以通过这个键把相应的值取出来

SharePreferences是一个接口,不能直接使用,但可以通过以下两种方法获得:

1.1.1Context类的getSharePreferences(String name ,ine mode)方法来获得一个SharePreferences对象:

此方法接收两个参数,第一个参数用于指定SharedPreference文件的名称,即存储XML文件的名称,如果存在,则会直接引用,如果指定的文件不存在则会创建一个,SharedPreference文件都是存放在/data/data/<包名>/shared_prefs/存储的XML文件目录下,第二个参数表示文件的存储模式(该方式创建的XML文件可以被同一个软件的Activity引用)。

文件的几种存储模式:

MODE_PRIVATE:表示私有文佳,该文件智能被创建他的文件所访问

MODE_APPEND:表示新的存储内容会添加在原有文件内容的后面。

MODE_WORLD_READABLE:表示该文件能被所有的文件读取,但是不可以写入。

MODE_WORLD_WEITABLE:表示该文件能被所有的文件写入,也可以读取

MODE_MULTI_PROCESS:表示改文件可以被多个进程同时访问,适用于Android2.3及之后的版本。

1.1.2:调用Activity对象的getPreferences(int mode)方法

该方法有一个参数,表示文件的存储模式,具体模式童第轶中相同,这种方法获得的对象只能被该方法所在的Activity所调用

1.2还要创建一个SharePreferences.Editor类的对象,该类负责具体的写入操作,创建方法使通过SharePreferences类的edit()方法来创建。

通常有以下几种方法:

putBoolean(String key,boolean value)

putString(String key,String value)

putInt(String key,int value)

putFloat(String key,float value)

putLong(String key,long value)

commit();//在执行完各种写入、删除、修改的操作后,通过此方法来正式提交数据,确认存储文件的数据变化

clear();//清除键值对的方法

remove(String key);//删除官集资所对应的值

getAll();//读取存储文件中的所有数据,返回一个Map类型的值,来存放所有的键值对

getBoolean(String key,boolean defValue)

getString(String key,String defValue)
getInt(String key,String defValue)
getFloat(String key,String defValue)
getLong(String key,String defValue) contains(String key) registerSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener listener);//注册监听器,来监听SharePreferences的更改事件,在onCreate()方法中设置 unregisterSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener listener);//注销监听器,不再监听SharePreferences的更改事件。

存储数据

得到SharedPreference对象之后,就可以开始向SharedPreference文件中存储数据了,主要有三步:

a.使用SharedPreference对象的edit()方法来获取一个SharedPreference.Editor对象

b.向SharedPreference.Editor对象中添加数据,比如添加一个布尔型数据就是用putBoolean方法,添加一个字符串就是用putString()方法,以此类推

c.调用commit()方法将添加的数据提交,从而完成数据存储操作

如:

private SharePreferences sp;

//创建一个SharePreferences接口的实例对象,将生成一个XML名称为demo_01,模式为MODE_PRIVATE

sp=this.getSharedPreferences("demo_01",MODE_PRIVATE);

//通过edit()方法创建一个SharePreferences.Editor类的实例对象
SharePreferences.Editor editor =sp.edit();
//通过putString()方法,将数据存入文件中
editor.putString("name","sssss"); //用commit()方法予以正式提交 editor.commit();

打开文件,可看到如下代码:

<map>

<string name="name">sssss</string>

</map>

删除数据:

editor.clear();//清除数据

查询数据:

String name = getString("name","lisi");

1.3从SharedPreferences中读取数据

SharedPreferences对象中提供了一系列的get方法用于读取数据,每种get对应了一种put方法

get方法接收两个参数,第一个是键,第二个参数是默认值,即当传入的键找不到对应的值时,会以什么样的默认值进行返回

可以实现设置密码,记住密码功能。

数据存储SharePreferences详解的更多相关文章

  1. Android开发笔记之: 数据存储方式详解

    无论是神马平台,神马开发环境,神马软件程序,数据都是核心.对于开发平台来讲,如果对数据的存储有良好的支持,那么对应用程序的开发将会有很大的促进作用.总体的来讲,数据存储方式有三种:一个是文件,一个是数 ...

  2. MySQL数据库的各种存储引擎详解

    原文来自:MySQL数据库的各种存储引擎详解   MySQL有多种存储引擎,每种存储引擎有各自的优缺点,大家可以择优选择使用: MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB ...

  3. 10.Spark Streaming源码分析:Receiver数据接收全过程详解

    原创文章,转载请注明:转载自 听风居士博客(http://www.cnblogs.com/zhouyf/)   在上一篇中介绍了Receiver的整体架构和设计原理,本篇内容主要介绍Receiver在 ...

  4. Web存储使用详解(本地存储、会话存储)

    Web存储使用详解(本地存储.会话存储)1,Web存储介绍HTML5的Web存储功能是让网页在用户计算机上保存一些信息.Web存储又分为两种:(1)本地存储,对应 localStorage 对象.用于 ...

  5. Kubernetes K8S之存储ConfigMap详解

    K8S之存储ConfigMap概述与说明,并详解常用ConfigMap示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS ...

  6. Kubernetes K8S之存储Volume详解

    K8S之存储Volume概述与说明,并详解常用Volume示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2C ...

  7. CEPH-4:ceph RadowGW对象存储功能详解

    ceph RadosGW对象存储使用详解 一个完整的ceph集群,可以提供块存储.文件系统和对象存储. 本节主要介绍对象存储RadosGw功能如何灵活的使用,集群背景: $ ceph -s clust ...

  8. C中存储分区详解

    一. 在c中分为这几个存储区:栈(stack),堆(heap),代码段(text),数据段(data),bss 段,常量存储区,1.栈(stack):由编译器自动分配释放自动分配,自动回收:栈区里面存 ...

  9. 基于CentOS6.5下如何正确安装和使用Tcpreplay来重放数据(图文详解)

    前期博客 基于CentOS6.5下snort+barnyard2+base的入侵检测系统的搭建(图文详解)(博主推荐) tcpreplay是什么? 简单的说, tcpreplay是一种pcap包的重放 ...

随机推荐

  1. Linux&C 线程控制 课后习题

    Q1:多线程与多进程相比有什么优势? 多进程程序耗费的资源大,因为fork()的时候子进程需要继承父进程的几乎所有东西,但是多线程程序线程只继承一部分,即自己的私有数据,例如自己的线程ID,一组寄存器 ...

  2. HydroD:辅助脚本函数

    HydroD:辅助函数 在HydroD中,使用JS脚本可以快速进行模拟参数设置,但是经过尝试,HydroD中的JS脚本语言并不支持现在JavaScript中的一些语法.所以考虑采用Matlab字符串拼 ...

  3. Java 网络编程 - 总结概述

    IP地址 IP地址IntAddress 唯一定位一台网络上的计算机 127.0.0.1:本地localhost IP地址的分类 ipV4/ipV6 ipV4:127.0.0.1,4个字节组成:0~25 ...

  4. requests的post请求基本使用

    import requests # 请求url url = 'https://fanyi.baidu.com/sug' # 请求头 headers = { 'User-Agent': 'Mozilla ...

  5. Scrapy入门到放弃06:Spider中间件

    前言 写一写Spider中间件吧,都凌晨了,一点都不想写,主要是也没啥用...哦不,是平时用得少.因为工作上的事情,已经拖更好久了,这次就趁着半夜写一篇. Scrapy-deltafetch插件是在S ...

  6. Android系统编程入门系列之硬件交互——传感器

    到目前为止,关于应用程序与用户之间的相关内容便比较肤浅的大致介绍完毕.而在整个系统架构中,应用程序与用户之间的交互,犹如参天大树上的枝干和树叶,交互起来五彩缤纷,但使整个生态系统保持生命力的核心,在于 ...

  7. [hiho1952]运算数

    可以发现如果将根的结果写成多项式,可以发现只需要预处理出f[i][j]表示以i为根的子树j次项有多少个,g[i]表示从n个数中选取i个数相乘的和,就可以通过\sum_{i=1}^{n}f[1][i]\ ...

  8. [hdu6582]Path

    首先,从1和n跑一次dij,判断每一条边能否出现在最短路上,不能出现就删掉,然后将所有边建在图上,流量为边权,跑最小割即可. 1 #include<bits/stdc++.h> 2 usi ...

  9. C#动态创建接口的实现实例对象

    本文简单介绍如何动态创建接口interface的实现实例对象,包含两个知识点: 1.如何获取接口interface的所有实现实例对象? 2.如何判断实例对象的构造函数是否有参数? 准备工作 首先新建一 ...

  10. Taro 3.4 beta 发布: 支持 Preact 为应用开辟更多体积空间

    项目体积是困扰小程序开发者的一大问题,如果开发者使用 Taro React 进行开发,更是不得不引入接近 100K 的 React 相关依赖,这让项目体积变得更加捉襟见肘.因此,Taro v3.4 的 ...