Android >> 13. ViewModel 状态保存

ViewModel 是什么?
在这里插入图片描述
ViewModel 是用来存储和管理相关UI 数据但并不会因屏幕旋转而销毁的一个类,从上图可以看出,一个activity 在多状态中不断轮回的过程中,这个ViewModel 是一直在进行一个数据的存储和管理工作的,直到一个应用程序被后台杀死,ViewModel 则被重置,UI 数据消失

如何使用ViewModel

ViewModel 实际上就是把一些会随着activity 中的数据单独存储。

  1. 首先我们在各个activity 的java 文件的同级目录中创建一个类MyViewModel,这个类要继承自ViewModel,然后在这个类中创建你需要存储的数据。
    例如你需要存储一个登录activity 的用户名和密码,那你就声明两个public 类型的String。

  2. 然后在activity 的java 代码中创建一个ViewModel 对象,在onCreate() 方法中对其进行实例化(不能使用new,要使用ViewModelProviders

MyViewModel myViewModel;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    myViewModel = ViewModelProviders.of(this).get(MyViewModel.class);
    medittext_name.setText(myViewModel.ip_string);
    medittext_password.setText(myViewModel.port_string);
}
  1. 最后在你认为需要的地方对myViewModel.ip_stringmyViewModel.port_string 这两个变量进行赋值,例如在登录按钮处:
myViewModel.ip_string = xxx;
myViewModel.port_string = xxx;

这样就可以了,我们就不用在java 程序中单独创建String 用来存储这些变量,统一写到这个ViewModel 类中,进行存储和管理。

这个方法可以很好的代替上一节中的Android >> 11. 屏幕方向以及UI 界面状态的保存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诺亚方包

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值