TransactionTooLargeException 的原因

问题

适配7.0时发生了TransactionTooLargeException的异常.

原因

1.Fragment关闭时会调用onSaveInstanceState,而在onSaveInstanceState中保存了比较大的数据.

2.调用fragment.setArguments(bundle)时,往bundle中放了过大的数据,FragmentManager管理Fragment时saveState报错.

解决方法

由于保存的数据较多,无法确定那个数据比较大,最后使用这个库_toolargetool_定位到数据较大的对象.

将_toolargetool_引入到项目

在Application中初始

这个库会在每次关闭Activity,Fragment时,打印出onSaveInstanceState的对象及大小.如图

查找log中较大的对象,进行相应的处理即可.比如保存到数据库,缩小对象等

相关链接

https://github.com/guardian/toolargetool