LifeCycle

簡(jiǎn)介

生命周期感知型組件:可以相應(yīng)另一個(gè)組件(Activity or Fragment)的生命周期變化。以便代碼更精簡(jiǎn)、易維護(hù)

作用

監(jiān)聽Activity 或 Fragment的生命周期變化

原理

觀察者模式,在各個(gè)生命周期注冊(cè)相關(guān)回調(diào),實(shí)現(xiàn)LifeCycleObsever 通過注釋的方式實(shí)現(xiàn)回調(diào)。

使用

角色

LifeCycleOwner 被觀察者(大部分時(shí)候是Actvity,F(xiàn)ragment)

AppCompatActivity與V4中的Fragment都已默認(rèn)實(shí)現(xiàn)了LifeCyclerOwner接口,所以可以直接使用

LifeCycleObsever 觀察者(可以是任何類)

Activit 中使用

Activit:

getLifeCycle().addObserver(new LifeCycleObserver());

注:直接把實(shí)現(xiàn)了Observer 的類的實(shí)例傳進(jìn)去就行(默認(rèn)沒實(shí)現(xiàn)LifeCyclerOwner接口的自己手動(dòng)實(shí)現(xiàn)一下,并在各個(gè)生命周期添加對(duì)應(yīng)的調(diào)用)

觀察者:

繼承LifeCycleObserve類,或者繼承他的子類

隨便寫個(gè)方法

添加注釋@OnLifeCycleEven(LifeCycle.Even.ON_RESUME)

  • LifeCycle.Even.ON_CREATE
  • LifeCycle.Even.ON_START
  • LifeCycle.Even.ON_RESUME
  • LifeCycle.Even.ON_PAUSE
  • LifeCycle.Even.ON_STOP
  • LifeCycle.Even.ON_DESTROY
  • LifeCycle.Even.ON_ANY (可用于匹配所有事件的事件常量。)
@OnLifecycleEvent(Lifecycle.Event.ON_ANY)
void onAny(LifecycleOwner owner, Lifecycle.Event event) {
        System.out.println("onAny:" + event.name());
    }

這樣這個(gè)方法就會(huì)在對(duì)應(yīng)的生命周期回調(diào)的時(shí)候調(diào)用了

其他生命周期一樣的寫法只是Even不同

注:LifeCycle.Even.Any 這個(gè)帶表的是任何生命周期,可以在這里監(jiān)聽生命周期的變化,能獲取到切換到的生命周期

Fragment 中使用

和Activity相同

獲取當(dāng)前生命周期

方法中添加 LifecycleOwner 參數(shù)

@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    @OnLifecycleEvent(Lifecycle.Event.ON_ANY)
    fun onLifecycleChanged(
        owner: LifecycleOwner,
        event: Lifecycle.Event
    ){
        owner.lifecycle
        Log.d(TAG,"onLifecycleChanged...")
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容