扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
先阐述一下JetPack:
JepPack是谷歌推出的Android软件组件集合,翻译出来就是喷气背包,
意思是用上这个框架,谷歌就可以带你飞。
它帮助您遵循最佳做法、让您摆脱编写样板代码的工作并简化复杂任务,以便您将精力集中放在所需的代码上。
AppCompat,Android KTX,Multidex,Test
Data Binding,LifeCycles,LiveData,ViewModel...
Download Manager,Media,Notification,Shareing...
Animation,Transitions,Auto,TV,Emoji...
这四个部分都十分优秀,这里我选择LiveData和ViewModel来给大家做案例分析,
能够达到屏幕旋转自动记住旋转前的数据状态实时自动同步
在底层数据库更改时通知视图
以注重生命周期的方式管理界面相关的数据
以上为viewmodel的生命周期,它会自动监听activity的生命周期。它只有在activcity完全被摧毁的时候才会调用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()
}
}
}
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流