这次我们实现让程序在后台被系统关闭之后仍能够记住数据

build.gradle

  1. 首先我们在build.gradle 文件dependencies 中增加这么一行代码:
implementation 'androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02'

ViewModel 文件

  1. 然后回到我们创建的ViewModel java文件中,为这个继承自ViewModel 的public 类增加构造函数:
private SavedStateHandle handle;ViewModelWithLiveData(SavedStateHandle handle){    this.handle = handle;}

MainActivity.java

  1. 既然我们对这个ViewModel 类增加了构造函数,那我们势必在对其实例化的时候也要带入一个SavedStateHandle 类型对象:
viewModelWithLiveData = ViewModelProviders.of(this, new SavedStateViewModelFactory(this)).get(ViewModelWithLiveData.class);
  1. 我们知道,savedInstanceState 是以键值对的方式存储数据的,那SavedStateHandle 中的数据也会是键值对的形式
    所以,我们需要为我们需要存储的数据创建一个“键”:
public final static String KEY_IP = "ip_address";public final static String KEY_PORT = "port_address";

ViewModel 文件

  1. 有了“键”,当然就要初始化值了:
public MutableLiveData<String> getLikedNumber_ip() {    if (!handle.contains(MainActivity.KEY_IP)){        handle.set(MainActivity.KEY_IP, "");    }    return handle.getLiveData(MainActivity.KEY_IP);}public MutableLiveData<String> getLikedNumber_port() {    if (!handle.contains(MainActivity.KEY_PORT)){        handle.set(MainActivity.KEY_PORT, "");    }    return handle.getLiveData(MainActivity.KEY_PORT);}

这是对两对键值对进行初始化的程序,我们用这两个方法进行数据的读取,若没有则向handle 中增添一对键值对

设置数据的代码:

public void setEditText_ip(String string){    handle.set(MainActivity.KEY_IP, string);}public void setEditText_port(String string){    handle.set(MainActivity.KEY_PORT, string);}

如此一来,我们的数据在程序在后台被系统杀掉后仍能进行保存,但还不是永久性地保存于系统中,下一节将会讲解如何永久性地保存于系统中

更多相关文章

  1. Android系统初始化过程分析(Android(安卓)4.3)
  2. QT5.2 Android(安卓)App中使用QML文件
  3. Android(安卓)Studio(2.3.3)配置Kotlin笔记
  4. Android学习笔记•从零开始•第二天•Intent-穿梭在Activity之间
  5. XE5 Android(安卓)开发数据访问server端
  6. Android——Log,Toast提示框,Intent跳转
  7. Android(安卓)遍历删除SD卡中某一文件夹下的指定子文件夹及其子
  8. Android(安卓)Studio 找不到R文件解决方法汇总
  9. Android(安卓)命令行构建和签署APK

随机推荐

  1. Phone双模修改涉及文件列表
  2. Android 开启或关闭硬件加速
  3. android 国内镜像
  4. android-使App全屏 - 随心
  5. Dowload android source code
  6. android中修改tablayout中的字体大小和颜
  7. android底部中间凸出导航 BottomProtrudi
  8. Android P WMS addwindow流程
  9. fill_parent和wrap_content的问题
  10. Android连接SpringMVC配置信息