优雅地管理App内配置 - SmartKey

利用Kotlin委托实现优雅地持久化存储App配置。

Posted by Vove on April 22, 2019

SmartKey

介绍

利用 Kotlin 委托实现优雅地持久化存储 App 配置。 使用一个类搞定App的配置。

基本使用

  1. 在 Application 中初始化:
1
SmartKet.init(context)
  1. 定义配置类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//这里可以注解配置存储文件名,多个配置类可分文件存储
@Config("app_config")
object AppConfig {

    /**
     * 基本类型存储
     */
    var text: String by SmartKey("defaultValue")
    var number: Int  by SmartKey(50)

    /**
     * 其他类型使用:[SmartKey.auto]
     */
    var intArr: Array<Int> by SmartKey.auto(emptyArray())

    var userInfo: UserInfo? by SmartKey.auto(null)

}

data class UserInfo(
        val name: String
)
  1. 使用

此时你可以像这样使用:

1
2
3
4
5
6
7
8
9
10
11
//获取存储值
val value = AppConfig.text
val n = AppConfig.number 

//实时存储
AppConfig.text = "setValue"
AppConfig.number = 0

//存储登录用户数据
AppConfig.userInfo = UserInfo("new_user")

demo

更多

  • 你可以指定变量对应存储的 key:
    1
    2
    
      //指定key 或 keyId
      var text: String by SmartKey("defaultValue", key = "your_key", keyId = R.string.key_text)
    
  • 选择是否加密数据:
1
2
3
    //使用encrypt来声明加密存储数据
    var userInfo: UserInfo? by SmartKey.auto(null, encrypt = true)

  • 使用SmartKey直接操作 key 和 value
1
2
3
4
5
6
7
8
9
10
11
12
//使用默认存储文件存取
SmartKey["text"] = "aaa" 
val n = SmartKey["number", -1] //key, defaultValue

//指定配置文件存取
SmartKey["app2", "key"] = 1
val s = SmartKey["app2", "text", "default"]//configName, key, defaultValue

//另外,key可使用StringRes 来代替 
val t = SmartKey[R.string.key_of_text, "default"]


引入 SmartKey

参见 Github

Thanks