|
30 | 30 | implementation 'com.noober:savehelper-api:2.1.0' |
31 | 31 | annotationProcessor 'com.noober:processor:2.1.0' |
32 | 32 |
|
| 33 | +kotlin的依赖方式 |
| 34 | + |
| 35 | + apply plugin: 'kotlin-kapt' |
| 36 | + apply plugin: 'kotlin-android-extensions' |
| 37 | + apply plugin: 'kotlin-android' |
| 38 | + |
| 39 | + implementation 'com.noober:savehelper:2.1.0' |
| 40 | + kapt 'com.noober:processor:2.1.0' |
| 41 | + implementation 'com.noober:savehelper-api:2.1.0' |
| 42 | + implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" |
| 43 | + |
33 | 44 | 混淆配置: |
34 | 45 |
|
35 | 46 | -dontwarn com.noober.** |
@@ -245,10 +256,54 @@ savedInstanceState不会null的时候,说明就是需要内存恢复的时候 |
245 | 256 | } |
246 | 257 | } |
247 | 258 |
|
| 259 | +# kotlin使用方法 |
| 260 | + |
| 261 | + 如果要在kotlin使用,与在java中使用相同,直接加注解即可,但是不同之出在于: |
| 262 | + |
| 263 | + 1:如果是基本数据类型,需要多添加一个注解@JvmField |
| 264 | + |
| 265 | + 2:如果是其他数据类型,需要增加lateinit关键字或者添加一个注解@JvmField |
| 266 | + 否则会报错"the modifier of the field must not be private, otherwise it won't work"。 |
| 267 | + |
| 268 | + 示例: |
| 269 | + |
| 270 | + |
| 271 | + class KotlinActivity : AppCompatActivity() { |
| 272 | + |
| 273 | + @NeedSave |
| 274 | + @JvmField |
| 275 | + var a :Int=3 |
| 276 | + |
| 277 | + @NeedSave |
| 278 | + lateinit var bundle: Bundle |
| 279 | + |
| 280 | + override fun onCreate(savedInstanceState: Bundle?) { |
| 281 | + super.onCreate(savedInstanceState) |
| 282 | + setContentView(R.layout.activity_kotlin) |
| 283 | + SaveHelper.recover(this, savedInstanceState) |
| 284 | + Log.e("KotlinActivity", a.toString()) |
| 285 | + |
| 286 | + } |
| 287 | + |
| 288 | + |
| 289 | + override fun onSaveInstanceState(outState: Bundle?) { |
| 290 | + Log.e("KotlinActivity", "onSaveInstanceState") |
| 291 | + a = 2 |
| 292 | + SaveHelper.save(this, outState) |
| 293 | + super.onSaveInstanceState(outState) |
| 294 | + } |
| 295 | + } |
| 296 | + |
| 297 | + |
248 | 298 | # 总结 |
249 | 299 | 看到这里大家已经猜到其实这个框架的实现原理和ButterKnife是相同的。而bufferknife的原理很多文章都有,这里就不过多介绍了。 |
250 | 300 |
|
251 | 301 | # 更新 |
| 302 | + |
| 303 | + |
| 304 | +## 2.0.0 |
| 305 | + 支持Bundle所有支持的的类型 |
| 306 | + |
252 | 307 | ## 2.1.0 |
253 | 308 | 增加对PersistableBundle持久化数据的保存,用于手机关机重启后的数据恢复,使用方法如下: |
254 | 309 |
|
|
0 commit comments