在我的應用程序中,我有ViewPager內部的片段。片段包含RecyclerView和基於用戶選擇從Web API獲取的數據列表。片段,在onSaveInstanceState上保存大型數據列表(如何防止TransactionTooLargeException)
在我的片段onSaveInstanceState
我清單數據保存到邦德,保持對配置變化等
public void onSaveInstanceState(Bundle savedState) {
super.onSaveInstanceState(savedState);
savedState.putParcelableArrayList(LIST_STORAGE_KEY, new ArrayList<>(mItemAdapter.getModels()));
}
現在我已經開始看到TransactionTooLargeException
我的應用程序錯誤報告中的數據。
看來在某些情況下,我把這個列表放到Bundle中,太大了(因爲它是非常複雜的對象的集合)。
我應該如何處理這種情況?如何存儲(並恢復)我的Fragment狀態。
可以在ViewPager內的碎片上使用setRetainInstance(true)
嗎?
如果我做到了,我將所有的網絡運營和數據,從數據庫中檢索網絡存儲到某些服務。在這種情況下,您不需要保存它,因爲它存儲在服務中 –
這聽起來像現在一點點矯枉過正。更簡單的解決方案將是從Web API再次獲取數據,但我認爲這不是很好的用戶體驗。 – devha
好吧,作爲一個醜陋而快速的選擇,您可以將數據保存到共享首選項或文件中。 –