这段时间也没啥写啥文章,写一下我现在在项目中使用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的使用相关推荐

  1. android kotlin中的when语句写法与for写法

    示例代码: fun getScore(name: String) = if (name == "Tom") {85 } else if (name == "AA" ...

  2. Android Kotlin okhttp Retrofit 线程协程那些事

    这篇文章不是用来讲概念的, 只是用来谈论一些关于Android 进程\协程那些问题 1. android 子线程中的异常会引发crash闪退吗? 答案是会的 Thread{throw RuntimeE ...

  3. 在 Android 开发中使用 Kotlin 协程 (一) -- 初识 Kotlin 协程

    前言 最近在研究 Kotlin 协程,发现功能真的超级强大,很有用,而且很好学,如果你正在或计划使用 Kotlin 开发 Android,那么 Kotlin 协程你一定不能错过! 协程是什么? 我们平 ...

  4. Android版本dp,Android中sp和dp区别

    --- title: Android中sp和dp区别 date: 2016-09-08 17:04:15 tags: Android categories: Android开发 --- ## 理解an ...

  5. android 距离设置多少dp核实,【Android学习】android布局中几个距离单位的区别:px、dp、sp...

    一.px 像素,我们经常说的400*800这种的就是像素,这个比较好理解. 二.dp 要理解dp,首先要先引入dpi这个概念,dpi全称是dots per inch,对角线每英寸的像素点的个数,所以, ...

  6. Android kotlin 将Base64字符串转换成Bitmap,并在jetpack compose的Image控件中显示

    Android kotlin 将Base64字符串转换成Bitmap 前言 代码 将Base64字符串转换成Bitmap 在jetpack compose的Image控件中显示Bitmap 完事 前言 ...

  7. 使用Kotlin在Android Studio中创建井字游戏

    井字游戏也被称为"Noughts和crosses".它是两个玩家最普遍的纸笔游戏之一. 它主要由年幼的孩子放置,但很多时候,你也可以看到成年人玩这个来切断无聊.这个游戏非常方便,可 ...

  8. Android kotlin jetpack compose 在APP中部署运行ktor服务器

    Android kotlin jetpack compose 在APP中部署运行ktor服务器 前言 添加依赖 服务器管理 活动 效果 DEMO 完事 前言 遇到需求,需要在APP中部署一个服务器,局 ...

  9. Android Studio中的Kotlin语言

    Android Studio中支持Java语言和Kotlin语言,为什么我们更建议使用Kotlin语言呢?主要原因有以下几点: 1.语法更加简洁,对于同样的功能,使用Kotlin开发的代码量可能会比使 ...

最新文章

  1. Python中如何写控制台进度条的整理
  2. 云效故障定位研究论文被ICSE 2021 SEIP track收录
  3. Netty源码注释翻译-Channel类
  4. JSON.stringify() 方法
  5. kudu : 扩容报错 Bad status: Not found: Unable to initialize catalog manager
  6. vue 项目中当访问路由不存在的时候默认访问404页面
  7. Android监听作用,Android开发之CheckBox的简单使用与监听功能示例
  8. 你身边有没有白天上班,晚上打零工送外卖、跑滴滴、做代驾的朋友?你怎么看?
  9. 【学习笔记】深入理解js原型和闭包(9)—— 简述【执行上下文】下
  10. 华为否认窃密;贾跃亭陪许家印考察FF;谷歌或被罚95亿欧元 | 极客头条
  11. 通过静态发现方式部署 Etcd 集群
  12. windows7蓝牙怎么打开_PC版微信v2.7.0曝光:支持电脑上打开小程序
  13. 尽量用iterator代替const_iterator
  14. hackerrank测试题·
  15. AD域管理员账号下发
  16. 虚拟机桥接模式下的网络设置
  17. 网络接入与身份认证简介
  18. 测试用例设计——正交实验法
  19. js中统一社会信用代码校验规则
  20. 五、肿瘤全基因组学体细胞结构突变特征(Patterns of somatic structural variation in human cancer genomes)

热门文章

  1. 安卓收银系统小票打印机数据采集插件项目需求文档
  2. 【Pytorch项目实战】之自然语言处理:RNN、LSTM、GRU、Transformer
  3. 计算机办公软件教程ppt,办公软件教学课件
  4. 请将磁盘插入“U盘(H)“的情况无法访问 磁盘结构损坏且无法读取
  5. 数据库的优化方式有哪些
  6. 特斯拉开放FSD测试版软件,马斯克:7天内驾驶记录良好的车主优先
  7. Volatile:可见性保证+禁止指令重排
  8. 岩体力学发展的一些回顾与若干未解之百年问题
  9. L1-059 敲笨钟 C直观解法
  10. 同步传输和异步传输有什么区别