Android- SharedPreferences 使用详解
Android-SharedPreferences 使用详解
参考
https://developer.android.google.cn/reference/android/content/SharedPreferences
Overview
SharedPreferences是个好东西,我们可以用它来存储一些个性化的设置信息或者是一些简单的数据,SharedPreferences是基于XML文件的。如果有大量的数据要存储的话它是不合适的(这时候可以考虑使用Sqlite数据库来存储)。
如何获取SharedPreferences
| 方法名称 | 解释 |
|---|---|
| context.getSharedPreferences(string,int) | 可以获取或者创建指定名称的SharedPreferences |
| Activity.getPreferences(int) | 获取以当前Activity名称命名的SP,实际上还是调用了getSharedPreferences 方法实现的 |
先来看一下 getPreferences 方法的源码,我们可以发现 getPreferences 也是调用的 getSharedPreferences 方法。
public SharedPreferences getPreferences(@Context.PreferencesMode int mode) {
return getSharedPreferences(getLocalClassName(), mode);
}
SharedPreferences使用实例
//向Shared Preferences中写入数据
fun writeData(view: View) {
val sp = getSharedPreferences("data", Context.MODE_PRIVATE)
val editor = sp.edit()
editor.putString("UserName", "This is a username")
editor.apply()
Toast.makeText(this, "Write successfully!", Toast.LENGTH_SHORT).show()
}
//从Shared Preference读取数据
fun readData(view: View) {
val sp = getSharedPreferences("data", Context.MODE_PRIVATE)
val userName = sp.getString("UserName", "")
Log.e("TAG", userName)
}
apply和commit方法
apply 和 commit 方法都可以完成 SharedPreferences 数据的提交和保存,但是这两个方法会有一些不同的地方。 apply 和 commit 的操作都是原子性的但是略有区别。
apply 方法 void apply();
如果同一个 SharedPreferences 的多个Editor 同时进行 apply操作,那么以最后一个为准。
apply 并没有返回值,apply方法的操作流程是先将数据提交到内存中的SharedPreferences中(将数据提交到内存中这次操作是原子性的),然后异步地将数据库写入到磁盘中(这一操作不是原子性的是可以被打断的),所以无法获取apply操作是否成功,但是apply方法要比commit 方法要快速,如果你并不关心保存是否成功的结果的话,那么推荐使用此方法。
commit 方法 boolean commit ()
如果同一个 SharedPreferences 的多个Editor 同时进行 commit 操作,那么以最后一个为准。
很明显 commit 方法是具有返回值的,与apply方法不同的, commit 方法是直接将数据写入到 持久化存储 中。 这一过程都原子性的并且是同步的。如果你比较关心,保存的结果的话,推荐使用此方法。
Android- SharedPreferences 使用详解的更多相关文章
- Android SharedPreferences存储详解
什么是SharedPreferences存储 一种轻量级的数据保存方式 类似于我们常用的ini文件,用来保存应用程序的一些属性设置.较简单的参数设置. 保存现场:保存用户所作的修改或者自定义参数设定, ...
- Android中Context详解 ---- 你所不知道的Context(转)
Android中Context详解 ---- 你所不知道的Context(转) 本文出处 :http://b ...
- android:ToolBar详解
android:ToolBar详解(手把手教程) 泡在网上的日子 发表于 2014-11-18 12:49 第 124857 次阅读 ToolBar 42 来源 http://blog.mosil.b ...
- Android之canvas详解
首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, y ...
- 【转】Android Canvas绘图详解(图文)
转自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1212/703.html Android Canvas绘图详解(图文) 泡 ...
- Android 核心分析 之八Android 启动过程详解
Android 启动过程详解 Android从Linux系统启动有4个步骤: (1) init进程启动 (2) Native服务启动 (3) System Server,Android服务启动 (4) ...
- Android GLSurfaceView用法详解(二)
输入如何处理 若是开发一个交互型的应用(如游戏),通常需要子类化 GLSurfaceView,由此可以获取输入事件.下面有个例子: java代码: package eoe.ClearTes ...
- Android编译过程详解(一)
Android编译过程详解(一) 注:本文转载自Android编译过程详解(一):http://www.cnblogs.com/mr-raptor/archive/2012/06/07/2540359 ...
- android屏幕适配详解
android屏幕适配详解 官方地址:http://developer.android.com/guide/practices/screens_support.html 一.关于布局适配建议 1.不要 ...
- Android.mk文件详解(转)
源:Android.mk文件详解 从对Makefile一无所知开始,折腾了一个多星期,终于对Android.mk有了一个全面些的了解.了解了标准的Makefile后,发现Android.mk其实是把真 ...
随机推荐
- 用vue前后端分离项目开发记录
一:软件安装 1.1 检测node 是否安装 1.2 安装淘宝镜像 cnpm 1.3 安装vue-cli 1.4 检查是否安装vue-cli脚手架成功 1.5安装webpack 模块管理工具 二:创建 ...
- python3中__get__,__getattr__,__getattribute__的区别
__get__,__getattr__和__getattribute都是访问属性的方法,但不太相同. object.__getattr__(self, name) 当一般位置找不到attribute的 ...
- int,char指针探究
#include<iostream> using namespace std; int main() { /* 思路: 1.关于int指针,不可以直接往指针里传值 例:int *a = 4 ...
- vb 中recordset提示对象关闭时不允许操作
vb中执行查询后,一般要判断是否为空,只要执行的查询执行了select,都可以用rs.eof 或者 rs.recordcount来判断, 但是,如果执行的sql中加了逻辑判断,导致没有执行任何sele ...
- Python 入门基础1 --语言介绍
本节目录: 一.编程语言介绍 二.python解释器介绍 三.安装python解释器 四.运行python程序的两种方式 五.变量 六.后期补充内容 一.编程语言介绍 1.机器语言: 直接用二进制编程 ...
- gitminer
https://github.com/UnkL4b/GitMiner + Autor: UnK + Blog: https://unkl4b.github.io + Github: https://g ...
- Linux内核中的printf实现【转】
转自:http://www.cnblogs.com/chenglei/archive/2009/08/06/1540702.html 从main.c中的printf开始读这个函数. 首先看printf ...
- 底板芯片组与内存映射(Motherboard Chipsets and the Memory Map) 【转】
转自:http://blog.chinaunix.net/uid-25909619-id-4194650.html 底板芯片组与内存映射 我打算写一些关于计算机内部构造(computer intern ...
- Visual Studio 2012“完美的拥抱”Visual Studio Online
看了Visual Studio 2012完美的拥抱GitHub 写的不错,不过,配置起来太麻烦.既然是使用VS编码,微软的东西嘛,当然还有更简单的,那就是Visual Studio Online.不用 ...
- springcloud配置详解
Spring Boot的配置参考Spring Boot系列文章,这里只对Spring Cloud用到的配置解释. spring.application.name:配置应用名称,在注册中心中显示的服务注 ...