Android?Jetpack組件中LifeCycle作用詳細(xì)介紹
Jetpack
Jetpack,我覺得翻譯為“飛行器”更好聽,因?yàn)镚oogle針對(duì)編程歷史亂象,整理出一套組件庫(kù),幫助開發(fā)者創(chuàng)造更完美的應(yīng)用作品?,F(xiàn)在市面上,很多公司招聘面試要求漸漸把Jetpack看作必會(huì)技能,Google也在瘋狂的安利Jetpack組件,和Kotlin一樣屬于親兒子一樣了。
1、那么Jetpack是什么呢

如圖所示,Jetpack是一個(gè)由多個(gè)技術(shù)庫(kù)組成的套件,可幫助開發(fā)者遵循最佳做法,減少樣板代碼并編寫可在各種Android版本和設(shè)備中一致運(yùn)行的代碼,讓開發(fā)者精力集中編寫重要的代碼。
2、為何使用Jetpack
- 遵循最佳做法:Android Jetpack 組件采用最新的設(shè)計(jì)方法構(gòu)建,具有向后兼容性,可以減少崩潰和內(nèi)存泄露。
- 消除樣板代碼:Android Jetpack 可以管理各種繁瑣的Activity(如:后臺(tái)任務(wù)、導(dǎo)航和生命周期管理),以便你可以專注于打造出色的應(yīng)用。
- 減少不一致:這些庫(kù)可在各種Android 版本和設(shè)備中以一致的方式運(yùn)作,助你降低復(fù)雜性!
3、Jetpack與AndroidX
- AndroidX命名空間中包含Android Jetpack庫(kù)
- AndroidX代替Android Support Library
- AAC(Android Architecture Component) 中的組件并入AndroidX
- 其他一些需要頻繁更新和迭代的特性也并入了AndroidX
LifeCycle
LifeCycle顧名思義是用來(lái)幫助開發(fā)者建立可感知生命周期的jetpack組件之一。LifeCycle在其內(nèi)部管理自己的生命周期,從而解藕頁(yè)面和組件,降低內(nèi)存泄露發(fā)生的可能性,Activity、Fragment、Service、Application均有LifeCycle支持。
1、LifeCycle的作用

如圖所示,LifeCycle用來(lái)監(jiān)聽Activity與Fragment的生命周期變化。
2、LifeCycle應(yīng)用
例如,一般我們?cè)贏ctivity中使用計(jì)時(shí)器時(shí)會(huì)在生命周期onPause和onReSume對(duì)其操作。因?yàn)橛?jì)時(shí)器是長(zhǎng)周期的變量,如果Activity關(guān)閉了,但沒(méi)有關(guān)閉計(jì)時(shí)器,就會(huì)繼續(xù)持用activity的引用造成內(nèi)存泄露。
1、設(shè)計(jì)組件
//自定義了控件,繼承了Chronometer計(jì)時(shí)器,實(shí)現(xiàn)了LifecycleObserver接口
@SuppressLint("ViewConstructor")
class MyChronometer : Chronometer, LifecycleObserver {
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
var elapsedTime: Long = 0
//計(jì)時(shí)開始 ,方法添加了注解
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
open fun startMeter() {
base = SystemClock.elapsedRealtime() - elapsedTime
start()
}
//計(jì)時(shí)暫停 ,方法添加了注解
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
open fun stopMeter() {
elapsedTime = SystemClock.elapsedRealtime() - base
stop()
}
}2、使用組件
class Step2Activity : AppCompatActivity() {
private var chronometer: MyChronometer? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//組件
chronometer = findViewById(R.id.chronometer)
//添加觀察者
lifecycle.addObserver(chronometer!!)
}
}3、總結(jié)LifeCycle的使用
1、繼承LifeCycle Observer方法
class lifecycleTest : LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
fun onCreate() {
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun onStart() {
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
fun onResume() {
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
fun onPause() {
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun onStop() {
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
fun onDestroy() {
}
}2、添加觀察者
lifecycle.addObserver(lifecycleTest)
到此這篇關(guān)于Android Jetpack組件重LifeCycle作用詳細(xì)介紹的文章就介紹到這了,更多相關(guān)Android Jetpack LifeCycle內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android 事件觸發(fā)機(jī)制的深入學(xué)習(xí)
這篇文章主要介紹了 Android 事件觸發(fā)機(jī)制的深入學(xué)習(xí)的相關(guān)資料,需要的朋友可以參考下2017-06-06
Android使用CountDownTimer類實(shí)現(xiàn)倒計(jì)時(shí)鬧鐘
這篇文章主要為大家詳細(xì)介紹了Android使用CountDownTimer類實(shí)現(xiàn)倒計(jì)時(shí)鬧鐘,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
Flutter之可滾動(dòng)組件子項(xiàng)緩存?KeepAlive詳解
這篇文章主要為大家詳細(xì)介紹了Flutter之可滾動(dòng)組件子項(xiàng)緩存?KeepAlive,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
Android studio 快速刪除無(wú)用資源的方法
最近苦于android 項(xiàng)目越來(lái)越大,項(xiàng)目需求不停變動(dòng)。項(xiàng)目中的資源文件越來(lái)越雜,越來(lái)越亂。android studio怎么刪除無(wú)用資源呢?下文圖文并茂給大家介紹的非常詳細(xì),需要的朋友參考下吧2017-11-11
Android圓形旋轉(zhuǎn)菜單開發(fā)實(shí)例
本文給大家分享一個(gè)動(dòng)畫菜單,基于android開發(fā)圓形旋轉(zhuǎn)菜單案例,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-09-09
在Android中調(diào)用WebService實(shí)例
這篇文章主要介紹了在Android中調(diào)用WebService實(shí)例,有需要的朋友可以了解一下。2016-11-11

