美文网首页
使用ViewModel保存数据

使用ViewModel保存数据

作者: GaoXiaoGao | 来源:发表于2021-01-12 10:15 被阅读0次

使用viewModel保存数据,使App被系统kill后,再次启动依然可以恢复被kill前的数据

下面的
model = ViewModelProviders.of(this,new SavedStateViewModelFactory(this)).get(MyViewModel.class);
api过时了,没有此方法了,仅记录下实现保存数据的思路

1.导入

    implementation 'androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01'

2.定义构造函数

导入lifecycle-viewmodel-savedstate后ViewModel中可以使用带有一个参数的构造函数

 private MyViewModel(SavedStateHandle handle){
        this.handle = handle;
    }

public MutableLiveData<Integer> getNumber() {

        if(!handle.contains(MainActivity.KEY_NUMBER)){
            handle.set(MainActivity.KEY_NUMBER,0);
        }
        return handle.getLiveData(MainActivity.KEY_NUMBER);
    }


//定义方法保存数据
    public void add(){
        getNumber().setValue(getNumber().getValue() + 1);
    }

3.在Activity中的代码调整

import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.SavedStateViewModelFactory;
import androidx.lifecycle.ViewModelProviders;
import android.os.Bundle;
import com.gao.viewmodelrestore.databinding.ActivityMainBinding;

public class MainActivity extends AppCompatActivity {

    MyViewModel model;
    ActivityMainBinding binding;

    public static final String KEY_NUMBER = "key_number";

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

        binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
//        model = ViewModelProviders.of(this).get(MyViewModel.class);
        //下面的api过时了,不能用了
        model = ViewModelProviders.of(this,new SavedStateViewModelFactory(this)).get(MyViewModel.class);
        binding.setData(model);
        binding.setLifecycleOwner(this);
    }
}

相关文章

  • 使用ViewModel保存数据

    使用viewModel保存数据,使App被系统kill后,再次启动依然可以恢复被kill前的数据 下面的model...

  • AAC---ViewModel

    ViewModel介绍 ViewModel是用来保存并且管理与LifeCycle以及UI相关数据的数据结构。Vie...

  • 《Android编程权威指南》之UI状态的保存与恢复篇

    本章主要学习使用ViewModel保存UI数据,修复GeoQuiz应用的UI状态丢失缺陷。 一、引入 ViewMo...

  • Android(47)ViewModel 解析

    ViewModel:具备生命周期感知能力的数据存储组件 ViewModel保存的数据,在页面因配置变更导致页面销毁...

  • Android 结构组件之ViewModel

    ViewModel ViewModel类设计用来存储和管理与UI相关的数据。这样数据就可以在配置更改中保存,比如屏...

  • ViewModel 你应该知道的知识点

    ViewModel 的 Saved State 在屏幕旋转时,ViewModel 可以保存数据。但是当应用在后台进...

  • ViewModel 基础使用和源码分析

    前言 承接上篇的学习顺序,本文主要是对 ViewModel 的学习。ViewModel 是用来保存 UI 数据的...

  • SavedState

    简介 在之前,我们知道使用ViewModel可以保存数据即使发生配置更改,如旋转屏幕、切换语言等,但是当程序放到后...

  • android 中的livedata的使用

    使用livedata的步骤 创建一个实例LiveData来保存某种类型的数据。这通常在你的ViewModel类内完...

  • ViewModel详解

    ViewModel是用来存储和管理UI相关数据的。 1、实现ViewModel ViewModel中一般使用Liv...

网友评论

      本文标题:使用ViewModel保存数据

      本文链接:https://www.haomeiwen.com/subject/cqcwoktx.html