Android(Kotlin) 委托(by) 封装 SharedPreferences

这篇具有很好参考价值的文章主要介绍了Android(Kotlin) 委托(by) 封装 SharedPreferences。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在 Kotlin 中,委托是一种通过将自身的某个功能交给另一个对象来实现代码重用的技术。通过委托,我们可以将某个属性或方法的实现委托给另一个对象,从而减少重复代码的编写。委托可以用于实现多重继承、代码复用和扩展现有类的功能。 Kotlin 中的委托通过关键字 “by” 来实现。委托分为两种:类委托和属性委托。

类委托是将接口的实现委托给另一个类,属性委托是将属性的实现委托给另一个对象。

本文讲解的是使用自定义属性委托来封装 SharedPreferences 的使用


var field by EntrustClass()

这就是比较常见的属性委托了,调用字段 field get()/set() 会对应到委托类 EntrustClass 的 getValue()/setValue()。举个例子:

class EntrustClass(private var name: String) {
    operator fun getValue(thisRef: Any?, property: KProperty<*>): String {
        println("调用了getValue() === $name")
        return name
    }

    operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
        println("调用了setValue() === $value")
        name = value
    }
}

fun main() {
    var field by EntrustClass("张三")
    field            // 调用了 get()
    field = "李四"    // 调用了 set()
}

Run main:
调用了getValue() === 张三
调用了setValue() === 李四

在第一行属性 field 委托给了类 EntrustClass,字段类型是与委托类 getValue() 的返回值类型相同的

当 field 进行 get()/set() 操作时,就会执行委托类的 getValue()/setValue() 逻辑


这样子就可以把一些冗余的代码操作(比如 SharedPreferences)使用(by)进行封装:

String 类型:

class SpString(private val spName: String, val key: String, private val defValue: String = "") {
    operator fun getValue(thisRef: Any?, property: KProperty<*>): String {
        val sp = context.getSharedPreferences(spName, Context.MODE_PRIVATE)
        return sp.getString(key, defValue)!!
    }

    operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
        val sp = context.getSharedPreferences(spName, Context.MODE_PRIVATE)
        sp.edit().putString(key, value).apply()
    }
}

Boolean 类型:

class SpBoolean(private val spName: String, val key: String, private val defValue: Boolean = false) {
    operator fun getValue(thisRef: Any?, property: KProperty<*>): Boolean {
        val sp = context.getSharedPreferences(spName, Context.MODE_PRIVATE)
        return sp.getBoolean(key, defValue)
    }

    operator fun setValue(thisRef: Any?, property: KProperty<*>, value: Boolean) {
        val sp = context.getSharedPreferences(spName, Context.MODE_PRIVATE)
        sp.edit().putBoolean(key, value).apply()
    }
}

其余的类型可以自行拓展


用法:

    private var spBooleanValue by SpBoolean(SP_NAME, "key1")
    private var spStringValue by SpString(SP_NAME, "key2")

    private fun getBooleanValue(): Boolean = spBooleanValue
    private fun getStringValue(): String = spStringValue

    private fun setSpValue(value: Boolean) {
        spBooleanValue = value
    }

    private fun setSpValue(value: String) {
        spStringValue = value
    }

直接在对象上 get 和 set 即可进行对 SharedPreferences 的读取和写入


在实际的开发当中,会在一个工具类当中进行 SharedPreferences 数据的读写,已经非常好了。但是若数据存储量非常大时,会使得工具类非常臃肿,使用委托封装可以进一步减少冗余代码文章来源地址https://www.toymoban.com/news/detail-845397.html

到了这里,关于Android(Kotlin) 委托(by) 封装 SharedPreferences的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kotlin中的委托

    在Kotlin中,委托是一种强大的设计模式,它允许一个类将其一些职责委托给另一个类。这种机制通过by来实现。委托有助于代码的重用,降低耦合性,并提供更清晰的类设计。在Kotlin中,有两种主要类型的委托:类委托和属性委托。 类委托允许一个类将部分或全部实现

    2024年01月15日
    浏览(52)
  • Kotlin基础(九):对象和委托

    本文主要讲解kotlin对象和委托。 Kotlin文章列表 Kotlin文章列表: 点击此处跳转查看 在Kotlin中,对象(Object)是一个具有特殊用途的单例实例。它是一种创建单个实例的方式,确保在整个应用程序中只存在一个特定对象。 对象在Kotlin中有以下特点和用途: 单例实例:对象只能有

    2024年02月14日
    浏览(38)
  • Kotlin(十七) 泛型和委托

    泛型的基本用法 泛型主要有两种定义方式:一种是定义泛型类,另一种是定义泛型方法,使用的语法结构都是 T 。当然括号内的 T 并不是固定要求的,事实上你使用任何英文字母或单词都可以,但是通常情况下, T 是一种约定俗成的泛型写法。 定义一个泛型类,示例如下:

    2024年02月04日
    浏览(39)
  • Kotlin笔记(五):泛型基础,委托

     Java自1.5版本引入了泛型的概念, Kotlin自然也支持泛型,Kotlin的泛型跟Java的泛型有相同之处,也有一些特别之处.  在一般的编程模式下,我们需要给任何一个变量指定一个具体的类型,而泛型允许我们在不指定具体类型的情况下进行编程,这样编写出来的代码将会拥有更好的

    2024年02月07日
    浏览(40)
  • Android SharedPreferences源码分析

    SharedPreferences 是 Android 平台上轻量级的 K-V 存储框架。 SharedPreferences 采用 XML 文件格式持久化键值对数据,文件的存储位置位于应用沙盒的内部存储 /data/data/包名/shared_prefs/ 位置,每个 XML 文件对应于一个 SharedPreferences 对象。 一个sp文件(XML文件) 对应一个 SharedPreferences 对象

    2024年02月19日
    浏览(44)
  • android SharedPreferences 手机保存数据的简单方法

    import java.lang.reflect.Method; import java.util.Map; import android.content.Context; import android.content.SharedPreferences; public class SharedPreferencesManager { /** 保存在手机里面的文件名 */ // public static String FILE_NAME = “hs_eba_sharedata”; public static String SPLASH_KEY = “splash_key”; public static String EXCHANGESTATE =“

    2024年04月17日
    浏览(40)
  • android数据的储存、文件的储存、SharedPreferences储存、SQLite的基本用法

    Context类中提供了openfileOutput()方法,用来获取一个 文件流 ,这个方法接收两个参数,第一个参数是文件名,在文件创建的时候使用的就是这个名称,注意这里指定的文件名不可以包含路径,因为所有的文件都是默认存储到/data/data/iles/目录下的。第二个参数是文件的操作模式

    2024年02月15日
    浏览(39)
  • Android---Kotlin 学习009

    在 java 里如果一个类没有被 final 修饰,那么它都是可以被继承的。而在 kotlin 中,类默认都是封闭的,要让某个类开放继承,必须使用 open 修饰它,否则会编译报错。此外在子类中,如果要复写父类的某个方法,需要用到 Override (在 kt 中就不是注解了)

    2024年02月01日
    浏览(44)
  • SharedPreferences使用及原理

    SharedPreferences 类提供了一个通用框架,以便您能够保存和检索原始数据类型的永久性键值对。您可以使用 SharedPreferences 来保存任何原始数据:布尔值,浮点值,整型值,长整型和字符串。此数据将跨多个用户会话永久保留(即使您的应用已终止亦如此)。 SharedPreferences 使用

    2023年04月12日
    浏览(33)
  • Android Kotlin 协程初探

    维基百科:协程,英文Coroutine [kəru’tin] (可入厅),是计算机程序的一类组件,推广了协作式多任务的子程序,允许执行被挂起与被恢复。 作为Google钦定的Android开发首选语言Kotlin,协程并不是 Kotlin 提出来的新概念,目前有协程概念的编程语言有Lua语言、Python语言、Go语言

    2024年02月08日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包