Kotlin Android 第17天,从 0 到 ML - MVVM架构 - LiveData

前言:

   学会了ViewModel,接下来就是建立观察 LiveData。

大纲 :

LiveData

   是一个 observable data holder class 类别。
   LiveData 仅在数据更改时才提供更新,并且仅向活动的观察者提供更新,并配合观察者的生命周期。
   建议是配合ViewModel一起使用。
   

LiveData优点:

    1.确保您的 UI 与您的数据状态匹配 (LiveDataObserver在底层数据发生变化时通知 对象)
    2.没有内存泄漏 (观察者绑定到 Lifecycle对象并在其关联的生命周期)
    3.不会因活动停止而崩溃(观察者的生命周期处於非活动状态,不会收到任何 LiveData 事件)
    4.不再需要手动生命周期处理(LiveData 会自动管理)
    5.始终保持最新数据(生命周期改变会在再次接收最新数据)
    6.正确的配置更改(例如设备旋转)
    7.共享资源(使用单例模式扩展对象来包装系统服务)

开始动手吧
在App build.gradle,加元件库

   dependencies {
     implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1"
     implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1"
   }

在ViewModel中,建立LiveData

   // Create a LiveData with a Type
   var mTitle = MutableLiveData<String>()

在Activity中,Observe LiveDtat

   viewModel.mTitle.observe(owner:this){ it:String
        dayTitle.text = it
   }
   

在ViewModel中,LiveData更新

      mTitle.postValue("Kotlin Android 第17天,从 0 到 ML -- LiveData")
      
  ** 可使用setValue(T) 和 postValue(T).
  ** setValue(T)是执行在 Main Thread (UI)
  ** postValue(T) 是执行在 Worker Thread (Backgroud)       
      

范例:

   Activity 原本显示"Kotlin Android 30天,从 0 到 ML" ,LiveData Delay 1s , 
   更新"Kotlin Android 第17天,从 0 到 ML -- LiveData",Activity收到更新文字就更新显示内容
  

执行结果:
https://ithelp.ithome.com.tw/upload/images/20210922/20121643lk571m81ye.jpg
https://ithelp.ithome.com.tw/upload/images/20210922/20121643BWeef3L6Tf.jpg

参考:

https://developer.android.com/topic/libraries/architecture/livedata


<<:  [DAY 7] Spring Boot 启动原理

>>:  Day 8 - [Zenbo开发系列] 05-DDE回覆规则设计

【Day 10】Repository 设计模式(Python)

前言 Repository 设计模式主要是要分离商业逻辑与资料存取的逻辑,希望开发者专注在商业逻辑的...

[Day 1]本日菜单-前言

好的 经过了一番风起云涌 惊滔骇浪之後(? 第一篇文章总算是生出来了 原本预估是8号就该开始开赛了 ...

[Day28] BERT(一)

一. 介绍 Bert全名为Bidirectional Encoder Representation ...

[Day17] 系统保护策略

在某个我辅导过的团队,我曾观察到一个现象: RD 在评估工作时数,总是会估出不合理的长时间。是 RD...

Day28 D3js Diagram常见的两点浪漫路径

D3js Diagram常见的两点浪漫路径 用途 在绘制diagram图表时,会用到的垂直水平连线,...