天天看點

activity調用fragment的方法_Lifecycle:監聽Activity或者Fragment的生命周期的變化

activity調用fragment的方法_Lifecycle:監聽Activity或者Fragment的生命周期的變化

最佳實踐

添加依賴

activity調用fragment的方法_Lifecycle:監聽Activity或者Fragment的生命周期的變化

getLifecycle()

方法擷取

Lifecycle

對象,然後添加監聽對象

LifecycleObserver

,Lifecycle庫提供了一個

DefaultLifecycleObserver

,根據業務需求來重寫相應的方法。

activity調用fragment的方法_Lifecycle:監聽Activity或者Fragment的生命周期的變化

使用分析

整個的實作就是一個觀察者模式,觀察模式的基本原理:有兩個角色,分别為觀察者(Observer)和被觀察者(Observable),首先所有的觀察者都需要在被觀察者中進行注冊,然後被觀察者狀态發生變更時,就通知已經注冊的觀察者,然後調用相應的方法。

LifecycleObserver

:生命周期觀察者的标示接口,是一個空接口,沒有實作方法;

實作這個接口,然後可以使用注解

@OnLifecycleEvent

來标示在哪一個生命周期進行回調;

LifecycleRegistry

:觀察者注冊類,其中構造方法傳入一個

LifecycleOwner

對象(也就是被觀察者);

使用其

add

方法來添加觀察者,使用

setCurrentState

進行狀态變更。

activity調用fragment的方法_Lifecycle:監聽Activity或者Fragment的生命周期的變化
activity調用fragment的方法_Lifecycle:監聽Activity或者Fragment的生命周期的變化

使用Jetpack中的Activity和Fragment

使用androidx中

appcompat

庫裡的Activity或者

fragment

庫中的Fragment,無需上述初始化

LifecycleRegistry

和狀态切換兩個步驟,且已經實作了

LifecycleObserver

接口,隻需要在合适的時候添加觀察者即可。

PS:

LifecycleRegistry

構造方法傳入的對象一般是Activity或Fragment,其中會不會導緻記憶體洩漏呢?其實是不會的,因為内部實作是使用了弱引用。

activity調用fragment的方法_Lifecycle:監聽Activity或者Fragment的生命周期的變化

歡迎關注微信公衆号:SimFG,讓我們一起學習一起進步

繼續閱讀