关于ViewModel SavedState(学习笔记)

ViewModel是保存activitiy中的数据 当系统屏幕反转或者按下home时activity会被销毁重新创建,这时候我们的数据会被重新初始化,所以我们要用ViewModel来保存当前的状态(当然按下返回键和结束进程不会保存)
在gradle(app)中添加依赖

implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01'

然后新建一个MyView Model类 继承ViewModel

public class MyViewModle extends ViewModel {
private SavedStateHandle handle;

public MyViewModle(SavedStateHandle handle) {//构造方法
    if (!handle.contains("NUMBER")){//如果handle没有包含NUMBER我们就新建一个赋值0
        handle.set("NUMBER",0);
    }

    this.handle = handle;
}

public LiveData<Integer>getNumber(){//过去数据值
    return handle.getLiveData("NUMBER");
}

public void add(){//加1运算
    handle.set("NUMBER",(int)handle.get("NUMBER") + 1);
}
}

然后再mainlayout中添加数据绑定
在这里插入图片描述

TextView设置TEXT属性为在这里插入图片描述

Button设计点击事件为
在这里插入图片描述

这是说明一下 使用数据绑定后 @{} 大括号内可以使用Java语法 ()->是方法的调用

然后再MainActivity写如代码

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ActivityMainBinding binding = DataBindingUtil.setContentView(this,R.layout.activity_main);//从数据绑定工具类中绑定
    MyViewModle viewModle = ViewModelProviders.of(this,new SavedStateViewModelFactory(getApplication(),this)).get(MyViewModle.class);//从工厂类中获取
    binding.setData(viewModle);
    binding.setLifecycleOwner(this);
}
}

然后既可以运行项目看看

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值