电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Kotlin 中的 SharedPreferences 优雅封装与使用

3页
  • 卖家[上传人]:知***
  • 文档编号:597195883
  • 上传时间:2025-01-20
  • 文档格式:DOCX
  • 文档大小:12.64KB
  • / 3 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、Kotlin 中的 SharedPreferences 优雅封装与使用引言在 Android 开发中,SharedPreferences 是一个非常实用的轻量级存储机制,用于保存应用的配置信息和简单的数据。然而直接操作 SharedPreferences 可能会导致代码重复和不易维护。在 Kotlin 中,我们可以利用其强大的委托属性功能对 SharedPreferences 进行封装,从而使得读写数据更为简洁、直观。封装 Kotlin 类import android.content.Contextimport android.content.SharedPreferencesimport kotlin.properties.Delegates.observableclass MyPreferences(context: Context, fileName: String = default_prefs) private val sharedPreferences: SharedPreferences = context.getSharedPreferences(fileName, C

      2、ontext.MODE_PRIVATE) / 封装一个可观察的委托属性 var username: String by observable(sharedPreferences.getString(username, ) _, old, new - if (old != new) sharedPreferences.edit().putString(username, new).apply() / 同样的方式封装其他类型的数据 var userAge: Int by observable(sharedPreferences.getInt(userAge, 0) _, old, new - if (old != new) sharedPreferences.edit().putInt(userAge, new).apply() / 其他自定义方法./ 使用示例val prefs = MyPreferences(this)prefs.username = JohnDoeprintln(prefs.username) / 输出已保存的用户名基于委托属性的实现在上述示例中,我们创建了一个名为

      3、MyPreferences 的类,并且为每种需要持久化的数据类型封装了相应的委托属性。这里使用了 observable 委托,当属性值发生改变时,会自动将新值保存回 SharedPreferences。此外,还可以进一步优化,通过泛型和扩展函数的方式实现一个通用的 Preference 类,能够处理多种数据类型的存取,减少重复代码:import android.content.SharedPreferencesimport kotlin.reflect.KPropertyclass Preference(private val preferences: SharedPreferences, private val key: String, private val defaultValue: T) operator fun getValue(thisRef: Any?, property: KProperty): T return when (defaultValue) is String - preferences.getString(key, defaultValue) as T i

      4、s Int - preferences.getInt(key, defaultValue) as T is Boolean - preferences.getBoolean(key, defaultValue) as T / . 对其他类型进行扩展 else - throw IllegalArgumentException(This type cant be saved using Preferences) operator fun setValue(thisRef: Any?, property: KProperty, value: T) val editor = preferences.edit() when (value) is String - editor.putString(key, value as String?) is Int - editor.putInt(key, value as Int) is Boolean - editor.putBoolean(key, value as Boolean) / . 对其他类型进行编辑 editor.apply() / 使用示例val sharedPref = PreferenceManager.getDefaultSharedPreferences(this)var isNightMode by Preference(sharedPref, is_night_mode, false) / 移除单个键值对 editor.remove(username).apply() / 清除所有数据 editor.clear().apply()

      《Kotlin 中的 SharedPreferences 优雅封装与使用》由会员知***分享,可在线阅读,更多相关《Kotlin 中的 SharedPreferences 优雅封装与使用》请在金锄头文库上搜索。

      点击阅读更多内容
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.