码迷,mamicode.com
首页 > 其他好文 > 详细

Fragment的保存

时间:2015-07-10 17:09:23      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

一、场景

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

技术分享

 

二、解决的方式

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

具体的代码如下:

public void onCreate(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/u/2253892/blog/477082

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!