先闡述一下JetPack:
JepPack是谷歌推出的Android軟件組件集合,翻譯出來就是噴氣背包,
意思是用上這個(gè)框架,谷歌就可以帶你飛。
它幫助您遵循最佳做法、讓您擺脫編寫樣板代碼的工作并簡化復(fù)雜任務(wù),以便您將精力集中放在所需的代碼上。
AppCompat,Android KTX,Multidex,Test
Data Binding,LifeCycles,LiveData,ViewModel...
Download Manager,Media,Notification,Shareing...
Animation,Transitions,Auto,TV,Emoji...
這四個(gè)部分都十分優(yōu)秀,這里我選擇LiveData和ViewModel來給大家做案例分析,
能夠達(dá)到屏幕旋轉(zhuǎn)自動(dòng)記住旋轉(zhuǎn)前的數(shù)據(jù)狀態(tài)實(shí)時(shí)自動(dòng)同步
在底層數(shù)據(jù)庫更改時(shí)通知視圖
以注重生命周期的方式管理界面相關(guān)的數(shù)據(jù)
以上為viewmodel的生命周期,它會(huì)自動(dòng)監(jiān)聽activity的生命周期。它只有在activcity完全被摧毀的時(shí)候才會(huì)調(diào)用onCleared(),你可以在這邊釋放你需要釋放的問題。
class SeekBarModel : ViewModel() {
//繼承ViewModel
val _sBar = MutableLiveData<BarI>()
val sBar: MutableLiveData<BarI>
get() = _sBar
var progress: Int? = null
get() = _sBar?.value?.progress
var observable: Subscription? = null
get() = _sBar?.value?.observable
override fun onCleared() {
super.onCleared()
Log.d("SeekBarModel", "ViewModel-->正在摧毀")
observable?.unsubscribe()
}
}
class BarI(progress: Int, observable: Subscription?) {
var progress: Int? = null
var observable: Subscription? = null
init {
this.progress = progress
this.observable = observable
}
}
class OriginLiveDataActivity : AppCompatActivity() {
private lateinit var sekBarModel: SeekBarModel
var observable: Subscription? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_origin_live_data)
sekBarModel = ViewModelProviders.of(this).get(SeekBarModel::class.java)
sekBarModel.sBar.observe(this, Observer { data ->
bar_life.progress = if (data == null) 0 else data.progress!!
btn_life.text = "當(dāng)前進(jìn)度" + bar_life.progress
})
start()
btn_start.setOnClickListener { view ->
finish()
}
}
//一秒加1,在bar上顯示進(jìn)度條
private fun start() {
if (sekBarModel.observable == null)
observable = Observable
.interval(1000, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
bar_life.progress += 1
sekBarModel.sBar.postValue(BarI(bar_life.progress, observable!!))
if (bar_life.progress == 100)
sekBarModel.observable?.unsubscribe()
}
}
}
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)頁標(biāo)題:JetPack中的LiveData+ViewModel使用-創(chuàng)新互聯(lián)
URL標(biāo)題:http://jinyejixie.com/article38/dhdjsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、面包屑導(dǎo)航、網(wǎng)頁設(shè)計(jì)公司、云服務(wù)器、微信小程序、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容