zoukankan      html  css  js  c++  java
  • Android 如何保存Android 运行时状态

    Android 如何保存Android 运行时状态

    使用 SaveInstanceState去保存运行时数据

    • 首先,我们需要重写一下系统的public void onSaveInstanceState(Bundle savedInstanceState)方法
    • 并在onSaveInstanceState方法中添加需要保存的数据。
    • 最后我们可以在onRestoreInstanceState方法中进行数据读取。

    如何进行运行时状态的保存

    上面我们说到,我们可以使用onSaveInstanceState去进行数据保存。

    /**
     * 保存实例状态
     * @param savedInstanceState
     */
    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
        savedInstanceState.putInt("ID", 1);
        super.onSaveInstanceState(savedInstanceState);
    }
    

    可以注意到这里用来存储运行时状态的数据的是一个Bundle如果你对它有过了解,那么我们都知道它是一个键值对类型的。所以我们的保存数据的语句就是:

    savedInstanceState.putInt("ID", 1);
    

    注意在存入数据后我们还需要调用超类的方法,来完成保存。

    如何恢复数据

    如何去恢复我们刚刚保存的数据。这个时候我们就需要去覆盖写一个onRestoreInstanceState(Bundle savedInstanceState)呢。

    /**
     * 恢复实例状态
     * @param savedInstanceState
     */
    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
        if (savedInstanceState != null) {
            Toast.makeText(this, "Welcome back.", Toast.LENGTH_SHORT).show();
            int id= savedInstanceState.getInt("ID");
            System.out.println(id);
        } else {
            Toast.makeText(this, "Welcome to HelloAndroid!", Toast.LENGTH_SHORT).show();
        }
        super.onRestoreInstanceState(savedInstanceState);
    }
    

    上面就是我们用来恢复运行时状态的相关代码呢。这里其实没啥,主要就是我们重写呢onRestoreInstanceState方法来完成操作。

    恢复流程如下。

    首先,在onRestoreInstanceState方法中,我们需要去判断一下当前的Bundle是否为空。如果不为空我们就需要进行数据获取操作呢。添加为空判断是为了空指针所导致的相关异常。

    int id = savedInstanceState.getInt("ID");
    

    这样,我们的获取操作就完成了,需要注意的是在获取一些数据的时候我们需要进行为空判断,但是这个无法避免取出来的值不为空,所以如果需要使用这些数据请进行异常处理,或者是相关的为空判断。

    到这里,我们Android 保存和恢复实例状态的操作就基本完成了。

    学习自:Stack Overflow

  • 相关阅读:
    《算法竞赛入门经典》—— 5.2.6 栈、队列与优先队列
    《算法:C语言实现》—— 第二部分 —— 第3章 —— 基本数据结构
    《算法:C语言实现》—— 第二部分 —— 第3章 —— 基本数据结构
    《算法:C语言实现》—— 第二部分 —— 第3章 —— 基本数据结构
    Broken Keyboard (a.k.a. Beiju Text)
    Broken Keyboard (a.k.a. Beiju Text)
    Broken Keyboard (a.k.a. Beiju Text)
    mongodb实战聚合 组内排序
    mongodb实战聚合 组内排序
    MongoDB基础篇:MongoDB Shell命令大全
  • 原文地址:https://www.cnblogs.com/cao-1/p/13681063.html
Copyright © 2011-2022 走看看