簡述
大多數(shù)Android Framework中的app組件都有自己的生命周期掸鹅。這些生命周期由操作系統(tǒng)或者運(yùn)行在你的進(jìn)程中的框架代碼所管理垮刹。它們是Android系統(tǒng)工作原理的核心缎脾,你必須遵守从绘。否則就由可能會導(dǎo)致內(nèi)存泄漏甚至崩潰
官方實(shí)現(xiàn)的Lifecycle 是一個持有組件(比如 activity 或者 fragment)生命周期狀態(tài)信息的類访忿,并且允許其它對象觀察這個狀態(tài)凿掂。主要使用兩個枚舉來跟蹤相關(guān)組件的生命周期狀態(tài)伴榔。很好的解決了某些組件在Activity生命周期狀態(tài)變化后無法感知的問題。但是官方并沒有獨(dú)立成庫供其他框架使用庄萎,只是存在官方的ViewModels踪少、 LiveData框架中。
為了解決這個問題糠涛,我就從源碼中將Lifecycle的實(shí)現(xiàn)拿了出來援奢,并用kotlin語言重新封裝了一遍,目前還沒有實(shí)現(xiàn)依賴注入部分忍捡,只是實(shí)現(xiàn)了LifecycleObserver回調(diào)集漾。
github 地址:https://github.com/Papeone/KLifecycle
使用方法
1. 將activity 繼承自 LifecycleAppCompatActivity 類,作為被觀察者者
class LifeMainActivity : LifecycleAppCompatActivity() {
? ? ? ? override fun onCreate(savedInstanceState: Bundle?) {
? ? ? ? ? ? ? ? super.onCreate(savedInstanceState)
? ? ? ? ? ? ? setContentView(R.layout.activity_life_main)
? ? ? ? ? ? ? // 添加觀察者
? ? ? ? ? ? ? lifecycleRegistry.addObserver(TestLife())
? ? ? ? }
}
2. 創(chuàng)建觀察者類 TestLife 實(shí)現(xiàn) LifecycleObserver 接口 就可以監(jiān)聽 activity的生命周期變化了
class TestLife : LifecycleObserver {
? ? ? ? override fun onStateChanged(lifecycleOwner: LifecycleOwner, event: Lifecycle.Event) {
? ? ? ? ? ? ? ? Log.d("TestLife", event.name)
? ? ? ? ? }
}
效果展示
總結(jié)
是時(shí)候用這種優(yōu)雅的方式給Presenter添加生命周期管理了砸脊,還等什么具篇,一個字就是干。