Fragment的保存

1、場景

      在一個fragment播放語音文件,一旦設備發生旋轉,播放將暫停。由於fragment將從新生成。具體的流程步驟以下: java

 

2、解決的方式

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

具體的代碼以下: 操作系統

public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setRetainInstance(true);
	}

3、內部的原理解析

fragment自己的示例在activity destroy的時候,沒有destroy掉,而是將其對應的view 銷燬和重繪了.當activity下次從新建立的時候,會直接調用以前的fragment實例,繪製新的view. code

固然此fragment是短期保留狀態,當操做系統內存不足須要回收內存的時候會被銷燬掉。 內存

具體的流程以下圖所示 it

4、與activity中onSaveInstanceState(Bundle)的對比

fragment的setRetainInstance(true);只能短暫的保存數據 class

若是須要長時間保存數據,使用其餘的方式 原理

相關文章
相關標籤/搜索