首页 > 其他 > 详细

Fragment的保存

时间:2015-07-10 19:21:08      阅读:239      评论:0      收藏:0      [点我收藏+]

一、场景

      在一个fragment播放语音文件,一旦设备发生旋转,播放将暂停。因为fragment将重新生成。具体的流程步骤如下:

技术分享

 

二、解决的方式

在Fragment的onCreate方法中,设置setRetainInstance(true);

具体的代码如下:

?
1
2
3
4
publicvoidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRetainInstance(true);
    }

三、内部的原理解析

fragment本身的示例在activity destroy的时候,没有destroy掉,而是将其对应的view 销毁和重绘了.当activity下次重新创建的时候,会直接调用之前的fragment实例,绘制新的view.

当然此fragment是短时间保留状态,当操作系统内存不足需要回收内存的时候会被销毁掉。

具体的流程如下图所示

技术分享

四、与activity中onSaveInstanceState(Bundle)的对比

fragment的setRetainInstance(true);只能短暂的保存数据

如果需要长时间保存数据,使用其他的方式

Fragment的保存

原文:http://my.oschina.net/yuanxulong/blog/477162

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!