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

  • 相关阅读:
    Java实现各种内部排序算法
    Java实现堆排序(大根堆)
    Java对象的序列化和反序列化
    Java实现链式存储的二叉查找树(递归方法)
    337. House Robber III(包含I和II)
    318. Maximum Product of Word Lengths
    114. Flatten Binary Tree to Linked List
    106. Construct Binary Tree from Inorder and Postorder Traversal
    105. Construct Binary Tree from Preorder and Inorder Traversal
    96. Unique Binary Search Trees(I 和 II)
  • 原文地址:https://www.cnblogs.com/cao-1/p/13681063.html
Copyright © 2011-2022 走看看