天天看点

Android Jetpack架构之LiveData

  livedata是可观察数据存储器类,与常规可观察数据存储类不同,livedata具有对系统组件(如:activity、fragment、service等)的生命周期感知能力。

  livedata只有在生命周期的活跃状态下才会更新数据,即start、resume,非活跃状态pause、stop是不会更新数据的。如下所示:

  livedata只有在活跃状态下才会通知更新数据,也就是start和resume生命周期状态下,当组件进入onpause或者onstop生命周期状态下,当前组件非活跃状态下不会通知更新数据,在非活跃状态下有viewmodel有数据更新,在组件状态从onpause或者onstop非活跃状态进入活跃状态onstart或者onresume下,会通知组件数据更新。

不需要手动控制生命周期。

不会因为activity的停止,导致app崩溃。

数据状态始终保持最新。

不会产生内存泄漏。

三、livedata api

非ui线程使用postvalue()方法。

ui线程使用setvalue()方法。

  rviewmodel类:

  mainactivity类: