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其实是把真 ...
随机推荐
- 使用Sql语句快速将数据表转换成实体类
开发过程中经常需要根据数据表编写对应的实体类,下面是使用sql语句快速将数据表转换成对应实体类的代码,使用时只需要将第一行'TableName'引号里面的字母换成具体的表名称就行了: declare ...
- MySQL数据类型以及基本使用详解
MySQL数据类型以及基本使用详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL服务器的主要组件 我们知道MySQL的主要组件主要是由服务端(mysqld)和客户端 ...
- Python案例
我感觉好方啊,Python和C语言不一样啊....写了几个例子... 变量 变量的占位后面没有逗号啊啊啊啊 name='张泉' age=22 tel=110 print ('姓名:%s,年龄:% ...
- Codeforces 923 D. Picking Strings
http://codeforces.com/contest/923/problem/D 题意: A-->BC , B-->AC , C-->AB , AAA-->empty 问 ...
- Codeforces 923 C. Perfect Security
http://codeforces.com/contest/923/problem/C Trie树 #include<cstdio> #include<iostream> us ...
- Codeforces Round #540 Tanya and Candies 预处理
http://codeforces.com/contest/1118/problem/B 题目大意,给你一个序列,删去一个数值之后,要求剩下序列奇数和偶数的和相同,问有多少种删法. 思路:预处理奇数和 ...
- JavaScript事件模拟元素拖动
一.前言: 最近要实现一个元素拖放效果,鼠标拖动元素并且定位元素,首先想到的是HTML5中的拖放,在HTML5中,有一个draggable属性,且有dragstart, dragover, drop等 ...
- CSS-3 Transform 的使用
CSS3制作动画的几个属性:变形(transform).转换(transition)和动画(animation)等更高级的CSS3技术.这篇主要是 Transform 的使用. Transform 字 ...
- MongoDB 之 "$" 的奇妙用法 MongoDB - 5
在MongoDB中有一个非常神奇的符号 "$" "$" 在 update 中 加上关键字 就 变成了 修改器 其实 "$" 字符 独立出现 ...
- 【SSH异常】InvalidDataAccessApiUsageException异常
今天在整合SSH的时候,一开始我再测试的时候service层添加了注解事务调用DAO可以正常的保存,在环境中我在XML中采用了spring的OpenSessionInViewFilter解决hiber ...