问题

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

原因

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

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

解决方法

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

toolargetool引入到项目

compile 'com.gu.android:toolargetool:0.1.3@aar

在Application中初始

TooLargeTool.startLogging(this)

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

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

相关链接

https://github.com/guardian/toolargetool

2 thoughts on “TransactionTooLargeException 的原因”

Quite进行回复 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注