創(chuàng)新互聯(lián)公司"三網(wǎng)合一"的企業(yè)建站思路。企業(yè)可建設擁有電腦版、微信版、手機版的企業(yè)網(wǎng)站。實現(xiàn)跨屏營銷,產(chǎn)品發(fā)布一步更新,電腦網(wǎng)絡+移動網(wǎng)絡一網(wǎng)打盡,滿足企業(yè)的營銷需求!創(chuàng)新互聯(lián)公司具備承接各種類型的成都網(wǎng)站設計、做網(wǎng)站項目的能力。經(jīng)過10多年的努力的開拓,為不同行業(yè)的企事業(yè)單位提供了優(yōu)質(zhì)的服務,并獲得了客戶的一致好評。
先闡述一下JetPack:
JepPack是谷歌推出的Android軟件組件集合,翻譯出來就是噴氣背包,
意思是用上這個框架,谷歌就可以帶你飛。
它幫助您遵循最佳做法、讓您擺脫編寫樣板代碼的工作并簡化復雜任務,以便您將精力集中放在所需的代碼上。
AppCompat,Android KTX,Multidex,Test
Data Binding,LifeCycles,LiveData,ViewModel...
Download Manager,Media,Notification,Shareing...
Animation,Transitions,Auto,TV,Emoji...
這四個部分都十分優(yōu)秀,這里我選擇LiveData和ViewModel來給大家做案例分析,
能夠達到屏幕旋轉自動記住旋轉前的數(shù)據(jù)狀態(tài)實時自動同步
在底層數(shù)據(jù)庫更改時通知視圖
以注重生命周期的方式管理界面相關的數(shù)據(jù)
以上為viewmodel的生命周期,它會自動監(jiān)聽activity的生命周期。它只有在activcity完全被摧毀的時候才會調(diào)用onCleared(),你可以在這邊釋放你需要釋放的問題。
class SeekBarModel : ViewModel() {
//繼承ViewModel
val _sBar = MutableLiveData()
val sBar: MutableLiveData
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 = "當前進度" + bar_life.progress
})
start()
btn_start.setOnClickListener { view ->
finish()
}
}
//一秒加1,在bar上顯示進度條
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()
}
}
}