系列文章目錄
第一章 Android: 徹底搞懂Lifecycle——使用篇
第二章 Android: 徹底搞懂Lifcycle——原理篇
前言
你真的了解lifecycle嗎?本文的目標就是要“打破砂鍋問到底”,帶你真真切切了解它。
一、Lifecycle是什么?
lifecycle 是屬于Android Jetpack(官方開發工具包)—— Architecture(架構組件)中的一員。
【官方介紹】構建生命周期感知型組件,這些組件可以根據 Activity 或 Fragment 的當前生命周期狀態調整行為。
【白話】lifecycle可以和Activity或Fragment生命周期綁定,方便我們做一些跟生命周期相關的業務邏輯。
1. 應用場景
- 控制視頻緩沖的開始與停止:啟動App的時候可以更快的開始緩沖視頻,App銷毀時停止緩沖。
- 開始和停止網絡連接:應用位于前臺時可能需要實時傳輸數據,并在應用進入后臺時自動暫停。
- 控制頁面動畫的啟動與停止:動畫在頁面可見時進行播放,不可見時停止。
2. 示例
為了方便李(理)姐(解),下面直接用偽代碼寫了。
class MainActivity: AppCompatActivity{
/**網絡監聽器*/
val .NET = NetListener()
/**視頻播放器*/
val mPlayer = VideoPlayer()
override fun onStart(){
mNet.connect()// 網絡開始連接
mPlayer.startCache()// 視頻開始緩沖
耗時任務()
// 其他業務邏輯...
}
override fun onStop(){
mNet.cancel()// 網絡斷開
mPlayer.releaseCache()// 視頻釋放緩存
// 其他業務邏輯...
}
}
這是很常見的寫法,我們在生命周期的回調方法中做了很多事情,一旦代碼多了后,是很難維護的。
另外,在頁面停止時,其他生命周期(如onStart)有耗時任務,這時有可能onStop先結束,而耗時的組件,還存在。
隨著業務復雜,也容易出bug, 讓本不富裕的家庭,雪上+霜