天天看點

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類: