Kotlin第十六讲---实战通过委托完成SharedPreferences封装

本文介绍了如何利用Kotlin的属性委托特性,优雅地封装SharedPreferences,避免传统方式中繁琐的get和set操作。通过创建一个Singleton类并定义不同数据类型的委托方法,简化了在Android应用中存储和获取数据的过程。
摘要由CSDN通过智能技术生成

内容简介

前面讲解了 Kotlin 具有类委托和属性委托。接下来我给大家分享 1 个实战技巧,使用属性委托来完成 SharedPreferences 的封装。

前景介绍

说起 SharedPreferences 在 Android 中是一种常用的本地化存储数据的方案。 以前 Java 封装都是将 SharedPreferences 封装成单利,原因就是 SharedPreferences 对象创建过程会解析 xml 文件,这个过程比较耗性能,因此我们常定义一个单利让其对象在整个应用生命周期中只有一个。
然后就是暴露对应类型的 put & get 方法。并且每次需要存储值的时候,都要在一个 常量类 中定义 KEY,每次 get 的时候,还需要查找对应的 KEY 值。

Kotlin 如何封装呢?能不能解决上面的问题呢?哈哈,当然可以,不得不说 Kotlin 的委托机制再一次刷新了我的认知。

代码封装

object SharedPreferencesUtils {
    /**
     * 创建 SharedPreferences 对象
     */
    var preferences: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(App.context)
}
/**
 * 定义类型 属性委托类
 */
private object SharedPreferenceDelegates {
    /**
     * 定义委托获取和设置对应类型的方法
     * 委托的原理,大家可以看我前面的文章
     */
    fun int(defaultValue: Int = 0) = object : ReadWriteProperty<SharedPreferencesUtils, Int> {
        override fun getValue(thisRef: SharedPreferencesUtils, property: KProperty<*>): Int {
            /**
             * 当获取值的时候,调用此方法
             * key 值是对应变量的昵称
             */
            return thisRef.preferences.getInt(property.name, defaultValue)
        }
        override fun setValue(thisRef: SharedPreferencesUtils, property: KProperty<*>, value: Int) {
            /**
             * 当设置值的时候,调用此方法
             * key 值是对应变量的昵称
             */
           
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值