代码拉取完成,页面将自动刷新
框架优点:
1、保持本地与缓存的数据同步
2、崩溃后可以对缓存数据进行还原
3、操作简单,以接口的形式存储数据,增加数据的可读性
4、可对缓存数据进行第一次加工
5、业务相关的代码与功能框架完全隔离,当需要更新框架直接修改配置就可以
//1、将它添加到存储库末尾的根 build.gradle 中
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
...................
//2、在模块对于的build.gradle 中
plugins {
id 'com.android.application'
id 'kotlin-android'
//1、支持kapt,这一步非常重要
id "kotlin-kapt"
}
...................
//3、Java语音版本支持
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
...................
//4、导入库
dependencies{
//3、导入开发jar包
//SP工具框架
//用MMKV本地缓存
implementation 'com.gitee.GZona.zsp:lib_mmkv:v1.1.04'
//用系统自带的本地缓存SP存储数据(与MMKV只需要实现一个就可以)
//implementation 'com.gitee.GZona.zsp:lib_sp:v1.1.04'
//SP的注解框架
implementation 'com.gitee.GZona.zsp:lib_sp_annotation:v1.1.04'
//SP的注解解析框架
kapt 'com.gitee.GZona.zsp:lib_sp_annotation:v1.1.04'
}
...................
class App : Application() {
override fun onCreate() {
super.onCreate()
//由于SP需要使用到context,所以在使用前需要提前需要初始化
SharePrefHolder.init { this }
}
}
package com.zona.yhsp
import android.text.TextPaint
import android.widget.TextView
import com.zona.lib_sp.SharePrefHolder
import com.zona.lib_sp_annotation.AnSharedPref
import com.zona.lib_sp_annotation.AnSpField
val TestPref: ITest by lazy { SharePrefHolder.getSpClass(ITest::class.java) }
/**
* @ClassName Test
* @Description
* @Author zona
* @Date 2021/3/31 16:44
* @Version 1.0
*/
@AnSharedPref()
interface ITest {
var test1: String
@AnSpField( defaultValue = "添加的默认数据")
var test8: String
var test2: Int
var test3: Float
var test4: Double
var test5: Boolean
var test6: List<TextView>?
var test7: List<Map<String, HashMap<Int, TextPaint>>>?
var test8: Test?
fun d(i: Int): String {
return "测试数据:${i}"
}
fun text(): String {
return test1
}
}
~~~~~~
class Test(val ddd:String) {
var texs1: String? = null
var texs2: String = ""
var aaaa: Int = 0
}
~~~~~~
应用示例
setContentView(R.layout.layout_test)
val content1 = findViewById<TextView>(R.id.content1)
val content2 = findViewById<TextView>(R.id.content2)
val btn1_1 = findViewById<TextView>(R.id.btn1_1)
val btn1_2 = findViewById<TextView>(R.id.btn1_2)
val btn2_1 = findViewById<TextView>(R.id.btn2_1)
val btn2_2 = findViewById<TextView>(R.id.btn2_2)
content1.text = TestPref.test1
content2.text = TestPref.test8
btn1_1.setOnClickListener {
content1.text = btn1_1.text
TestPref.test1 = btn1_1.text.toString()
}
btn1_2.setOnClickListener {
content1.text = btn1_2.text
TestPref.test1 = btn1_2.text.toString()
Toast.makeText(this, TestPref.text(), Toast.LENGTH_SHORT).show()
}
TestPref:test8 = Test("测试")
btn2_2.setOnClickListener {
//如果需要修改对象中的数据,可以使用该方法同步
TestPref:test8.saveSpData {
DomeConf.test?.aaaa = (DomeConf.test?.aaaa ?: 0) + 1
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。