前言: ViewModel的简单介绍
介绍:ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel 类让数据可在发生屏幕旋转,更换系统语言等配置更改后继续留存。
接下来我们通过一个简单的例子,来了解和使用ViewModel
一、首先引入ViewModel的相关依赖
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
二、布局文件activity_view_model.xml
三、创建MyViewModel类继承于ViewModel
public class MyViewModel extends ViewModel {
public int number=0;
}
四、在ViewModelActivity进行相应的功能编写
public class ViewModelActivity extends AppCompatActivity {
private TextView tv_figure;
private Button btn_add1, btn_add2;
private MyViewModel myViewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_model);
tv_figure = findViewById(R.id.tv_figure);
btn_add1 = findViewById(R.id.btn_add1);
btn_add2 = findViewById(R.id.btn_add2);
//这个获取MyViewModel对象的方法已经被废弃了
// myViewModel = ViewModelProviders.of(this).get(MyViewModel.class);
//创建MyViewModel对象
myViewModel = new ViewModelProvider(this).get(MyViewModel.class);
tv_figure.setText(String.valueOf(myViewModel.number));
btn_add1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myViewModel.number++;
tv_figure.setText(String.valueOf(myViewModel.number));
}
});
btn_add2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myViewModel.number += 2;
tv_figure.setText(String.valueOf(myViewModel.number));
}
});
}
}
效果演示:
可以看到屏幕进行旋转后,数据依然在,这就是ViewModel的简单使用,有不当之处,可以指出~



