android kotlin中sp的使用
这段时间也没啥写啥文章,写一下我现在在项目中使用sp的方法。这个也是我看别人写的,感觉好的话也可以在你的项目中使用,个人感觉还是挺方便的。
一.创建SpHelper.kt
package com.tk.checkreinforce.util.coreimport android.content.Contextprivate const val SP = "sp"@JvmOverloads
fun <T> getSpValue(filename: String = SP,context: Context,key: String,defaultVal: T
): T {val sp = context.getSharedPreferences(filename, Context.MODE_PRIVATE)return when (defaultVal) {is Boolean -> sp.getBoolean(key, defaultVal) as Tis String -> sp.getString(key, defaultVal) as Tis Int -> sp.getInt(key, defaultVal) as Tis Long -> sp.getLong(key, defaultVal) as Tis Float -> sp.getFloat(key, defaultVal) as Tis Set<*> -> sp.getStringSet(key, defaultVal as Set<String>) as Telse -> throw IllegalArgumentException("Unrecognized default value $defaultVal")}
}@JvmOverloads
fun <T> putSpValue(filename: String = SP,context: Context,key: String,value: T
) {val editor = context.getSharedPreferences(filename, Context.MODE_PRIVATE).edit()when (value) {is Boolean -> editor.putBoolean(key, value)is String -> editor.putString(key, value)is Int -> editor.putInt(key, value)is Long -> editor.putLong(key, value)is Float -> editor.putFloat(key, value)is Set<*> -> editor.putStringSet(key, value as Set<String>)else -> throw UnsupportedOperationException("Unrecognized value $value")}editor.apply()
}@JvmOverloads
fun removeSpValue(filename: String = SP, context: Context, key: String) {context.getSharedPreferences(filename, Context.MODE_PRIVATE).edit().remove(key).apply()
}@JvmOverloads
fun clearSpValue(filename: String = SP, context: Context) {context.getSharedPreferences(filename, Context.MODE_PRIVATE).edit().clear().apply()
}
二.使用
fun setUserId(userId: String) = putSpValue(KEY_USER_ID, App.instance, KEY_USER_ID, userId)fun getUserId(): String = getSpValue(KEY_USER_ID, App.instance, KEY_USER_ID, "")
直接可以在任何一个类中使用putSpValue()与getSpValue()方法,你也可以创建一个二级目录例如专门保存用户信息的UserInfoStore类然后在封装方法。
android kotlin中sp的使用相关推荐
- android kotlin中的when语句写法与for写法
示例代码: fun getScore(name: String) = if (name == "Tom") {85 } else if (name == "AA" ...
- Android Kotlin okhttp Retrofit 线程协程那些事
这篇文章不是用来讲概念的, 只是用来谈论一些关于Android 进程\协程那些问题 1. android 子线程中的异常会引发crash闪退吗? 答案是会的 Thread{throw RuntimeE ...
- 在 Android 开发中使用 Kotlin 协程 (一) -- 初识 Kotlin 协程
前言 最近在研究 Kotlin 协程,发现功能真的超级强大,很有用,而且很好学,如果你正在或计划使用 Kotlin 开发 Android,那么 Kotlin 协程你一定不能错过! 协程是什么? 我们平 ...
- Android版本dp,Android中sp和dp区别
--- title: Android中sp和dp区别 date: 2016-09-08 17:04:15 tags: Android categories: Android开发 --- ## 理解an ...
- android 距离设置多少dp核实,【Android学习】android布局中几个距离单位的区别:px、dp、sp...
一.px 像素,我们经常说的400*800这种的就是像素,这个比较好理解. 二.dp 要理解dp,首先要先引入dpi这个概念,dpi全称是dots per inch,对角线每英寸的像素点的个数,所以, ...
- Android kotlin 将Base64字符串转换成Bitmap,并在jetpack compose的Image控件中显示
Android kotlin 将Base64字符串转换成Bitmap 前言 代码 将Base64字符串转换成Bitmap 在jetpack compose的Image控件中显示Bitmap 完事 前言 ...
- 使用Kotlin在Android Studio中创建井字游戏
井字游戏也被称为"Noughts和crosses".它是两个玩家最普遍的纸笔游戏之一. 它主要由年幼的孩子放置,但很多时候,你也可以看到成年人玩这个来切断无聊.这个游戏非常方便,可 ...
- Android kotlin jetpack compose 在APP中部署运行ktor服务器
Android kotlin jetpack compose 在APP中部署运行ktor服务器 前言 添加依赖 服务器管理 活动 效果 DEMO 完事 前言 遇到需求,需要在APP中部署一个服务器,局 ...
- Android Studio中的Kotlin语言
Android Studio中支持Java语言和Kotlin语言,为什么我们更建议使用Kotlin语言呢?主要原因有以下几点: 1.语法更加简洁,对于同样的功能,使用Kotlin开发的代码量可能会比使 ...
最新文章
- Python中如何写控制台进度条的整理
- 云效故障定位研究论文被ICSE 2021 SEIP track收录
- Netty源码注释翻译-Channel类
- JSON.stringify() 方法
- kudu : 扩容报错 Bad status: Not found: Unable to initialize catalog manager
- vue 项目中当访问路由不存在的时候默认访问404页面
- Android监听作用,Android开发之CheckBox的简单使用与监听功能示例
- 你身边有没有白天上班,晚上打零工送外卖、跑滴滴、做代驾的朋友?你怎么看?
- 【学习笔记】深入理解js原型和闭包(9)—— 简述【执行上下文】下
- 华为否认窃密;贾跃亭陪许家印考察FF;谷歌或被罚95亿欧元 | 极客头条
- 通过静态发现方式部署 Etcd 集群
- windows7蓝牙怎么打开_PC版微信v2.7.0曝光:支持电脑上打开小程序
- 尽量用iterator代替const_iterator
- hackerrank测试题·
- AD域管理员账号下发
- 虚拟机桥接模式下的网络设置
- 网络接入与身份认证简介
- 测试用例设计——正交实验法
- js中统一社会信用代码校验规则
- 五、肿瘤全基因组学体细胞结构突变特征(Patterns of somatic structural variation in human cancer genomes)
热门文章
- 安卓收银系统小票打印机数据采集插件项目需求文档
- 【Pytorch项目实战】之自然语言处理:RNN、LSTM、GRU、Transformer
- 计算机办公软件教程ppt,办公软件教学课件
- 请将磁盘插入“U盘(H)“的情况无法访问 磁盘结构损坏且无法读取
- 数据库的优化方式有哪些
- 特斯拉开放FSD测试版软件,马斯克:7天内驾驶记录良好的车主优先
- Volatile:可见性保证+禁止指令重排
- 岩体力学发展的一些回顾与若干未解之百年问题
- L1-059 敲笨钟 C直观解法
- 同步传输和异步传输有什么区别