代码之家  ›  专栏  ›  技术社区  ›  lannyf

用savedInstance保存和片段的参数有什么区别?

  •  1
  • lannyf  · 技术社区  · 7 年前

    在Android片段中 onSaveInstanceState() 它允许保存一些数据,以便在操作系统重新创建片段时恢复状态。

    onSaveInstanceState(outState: Bundle) {
        outState.putString("dataStr", dataStr)
    }
    

    // set the argument
    Bundle bundle = new Bundle();
    bundle.putString("dataStr", dataStr);
    AFragment aFragment = new AFragment();
    aFragment.setArguments(bundle);
    
    //get the argument inside the AFragment
    Bundle bundle=getArguments();  
    

    这是否意味着,如果fragment的论点中有任何东西,那么它们就不需要通过 onSaveInstanceState() ?

    问题是:既然参数可以在片段中更新,那么它是否是保存参数中的数据而不是通过 ?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Boukharist    7 年前

    onSaveInstanceState() / onRestoreInstanceState() 只有在需要重新创建活动/片段时(特别是在配置更改时),Android才会显式调用,假设用户开始键入内容,然后更改了屏幕的方向,如果不处理保存状态,他将丢失输入。

    片段Args 另一方面,用于实例化片段的参数,即使重新创建片段,也将可用 它将是初始状态。

    但是,如果您想保存当前状态(用户输入…),以防碎片复制,则需要通过 保存实例 方法。

    为了进一步了解保存/恢复的工作原理,我建议 article

        2
  •  0
  •   Abhinav Gupta Eduardo Oliveira    7 年前

    保存状态 :saveInstanceState当您在活动之间频繁地来回移动时,如果关闭应用程序时记住这一点,则意味着它将从内存中删除,信息也将丢失。

    捆绑包: enter image description here

    所以Bundle就像一个映射,它也可以被编组/反编组到byte[]或从byte[]中编组。一个重要的注意事项是,您不能使用这个byte[]来持久化您的包,因为它的设计只是为了传输到组件,并且在底层数据结构发生变化时将不起作用。

    推荐文章