zoukankan      html  css  js  c++  java
  • onSaveInstanceState和onRestoreInstanceState

    activity在即将被销毁的时候(横竖屏切换,出bug时),会调用 onSaveInstanceState进行保存一些数据,再重新onstart之后会调用onRestoreInstanceState方法恢复数据。

      //disdroy前保存数据
        @Override
        public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
            super.onSaveInstanceState(outState, outPersistentState);
            Log.d("***", "程序异常 保存数据");
            outState.putString("name", "抗压吧务团队5");
    
        }
    
        //恢复数据
        @Override
        protected void onRestoreInstanceState(Bundle savedInstanceState) {
            super.onRestoreInstanceState(savedInstanceState);
            System.out.println(savedInstanceState.isEmpty());
            Log.d("***", "恢复数据:" + savedInstanceState.get("name"));
        }

    oncreat方法也会有可能恢复数据(取决于之前有没有保存数据),所以要在数据恢复之前判断一下 Bundle 是否为null 

    官方推荐使用 onRestoreInstanceState onRestoreInstanceState 一旦执行 Bundle 中必然有值。

    之前照着书上打始终不执行  onSaveInstanceState ,原因是安卓5.0以后activity新加了一个属性: persistableMode,这样activity就有了持久化的能力

    Manifest里在activity中加入:

      <activity
                android:name=".MainActivity"
                android:persistableMode="persistAcrossReboots">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
  • 相关阅读:
    小程序导航栏文字动态修改
    小程序之页面跳转传递参数问题
    怎样像gitHub上上传文件
    js实现数组去重
    Promise 解决同步请求问题
    input 实现一次性上传文件
    layui中load具体用法
    echarts点击柱状图时触发点击事件
    js求100以内的素数
    js怎样判断一个数是质数
  • 原文地址:https://www.cnblogs.com/6324/p/6294827.html
Copyright © 2011-2022 走看看