將Activity成為 LiveData 的生命周期所有者?
或者
將Fragment成為 LiveData 的生命周期所有者?
uj5u.com熱心網友回復:
如谷歌檔案中所述
每個 Fragment 實體都有自己的生命周期。當用戶導航并與您的應用程式互動時,您的片段會在其生命周期中的各種狀態之間轉換,因為它們被添加、洗掉以及進入或退出螢屏。
所以每個片段和活動都有自己的生命周期。
當您在片段或活動中觀察 LiveData 時,您傳遞與該片段或活動關聯的生命周期所有者。
uj5u.com熱心網友回復:
答案是根據我的理解,我會說,這取決于使用或呼叫 LiveData 的位置?
讓我們來看看一些基礎知識。
LifecycleOwner的定義是指
具有 Android 生命周期的類。自定義組件可以使用這些事件來處理生命周期更改,而無需在 Activity 或 Fragment 中實作任何代碼。
生命周期
生命周期感知組件執行操作以回應另一個組件的生命周期狀態的變化,例如活動和片段。這些組件可幫助您生成組織更好、通常更輕量級、更易于維護的代碼。
由于 Activity 和 Fragments 的生命周期不同。
- Activity - Activity 有自己的生命周期
- Fragment - 每個 Fragment 實體都有自己的生命周期。為了管理生命周期,Fragment 實作了 LifecycleOwner。
Fragment 基本上包含在一個 Activity 中;所以如果Activity被銷毀,Fragments也會被銷毀。
但是沒必要如果fragment被銷毀,Activity也會被銷毀。
實時資料
您可以注冊一個與實作 LifecycleOwner 介面的物件配對的觀察者。這種關系允許當相應 Lifecycle 物件的狀態更改為 DESTROYED 時移除觀察者。
現在回到你的問題。
當在 Activity 中觀察到 LiveData 時,生命周期所有者就是 Activity 本身。
當在 Fragment 中觀察到 LiveData 時,生命周期所有者就是 Fragment 本身。
uj5u.com熱心網友回復:
lifeCycleOwnerLiveData-Fragment 或 Activity應該是什么?
這實際上取決于您在哪里使用liveData. LiveData是生命周期感知的,這意味著它們尊重 android 應用程式組件的生命周期。
如果您使用liveData觀察活動內部的資料,那么您應該使用activity.
如果您liveData用于觀察 a 中的資料fragment,則使用activityas毫無意義lifecycleOwner。activity如果fragment被替換或洗掉,使用會導致記憶體泄漏,因為liveData仍然會持有對片段的強參考,該參考將一直保留到activity被銷毀。
我們應該使用viewLifecycleOwner內部片段,因為它們系結到片段的生命周期。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/327443.html
標籤:安卓 科特林 android-fragments 安卓活动 android-livedata
上一篇:帶有協調器布局狀態欄間距問題的Android11全屏
下一篇:如何解決這個Error:Unresolvedreference:textwhichisrelatedtoscopeinKotlin?
