探究Jetpack(一)之ViewModel和Lifecycles

Jetpack简介

Jetpack是一个开发组件工具集,它的主要目的是帮助我们编写出更加简洁的代码,并简化开发过程。
Jetpack中的组件有一个特点,它们大部分不依赖于任何Android系统版本,这意味着这些组件通常是定义在AndroidX库当中的,并且拥有非常好的向下兼容性

Android studio新建一个JetpackTest工程,然后开始了解Jetpack

ViewModel

ViewModel应该可以算是Jetpack中最重要的组件之一了,它是专门用于存放与界面相关的数据的。也就是说,只要是界面上能看得到的数据,它的相关变量都应该存放在ViewModel中,而不是Activity中,这样可以在一定程度上减少Activity中的逻辑
ViewModel还有一个非常重要的特性。当手机发生横竖屏旋转的时候,Activity会被重新创建,同时存放在Activity中的数据也会丢失。而ViewModel的生命周期和Activity不同,它可以保证在手机屏幕发生旋转的时候不会被重新创建,只有当Activity退出的时候才会跟着Activity一起销毁。因此,将与界面相关的变量存放在ViewModel当中,这样即使旋转手机屏幕,界面上显示的数据也不会丢失

ViewModel的基本用法

比较好的编程规范是给每一个Activity和Fragment都创建一个对应的ViewModel,先为MainActivity创建一个对应的MainViewModel类,并让它继承自ViewMode
根据前面所了解的知识,所有与界面相关的数据都应该放在ViewModel中。这里如果要实现一个计数器的功能,就可以在ViewModel中加入一个counter变量用于计数,如下所示:

class MainViewModel : ViewModel() {
   
	 var counter = 0
}

现在需要在界面上添加一个按钮,每点击一次按钮就让计数器加1,并且把最新的计数显示在界面上
修改activity_main.xml中的代码,添加一个TextView用于显示当前的计数,再添加一个Button用于对计数器加1
接着开始实现计数器的逻辑,修改MainActivity中的代码

class MainActivity : AppCompatActivity() {
   

	 lateinit var viewModel: MainViewModel
	 
	 override fun onCreate(savedInstanceState: Bundle?) {
   
		 super.onCreate(savedInstanceState)
		 setContentView(R.layout.activity_main)
		 viewModel = ViewModelProvider(this).get(MainViewModel::class.java)
		 plusOneBtn.setOnClickListener {
   
			 viewModel.counter++
			 refreshCounter()
		 }
		 refreshCounter()
	 }
	 
	 private fun 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值