记一次TransactionTooLargeException的排查及解决方案

162 阅读1分钟

App首页是多个fragment+tablayout的结构,线上有比较多的android.os.TransactionTooLargeException崩溃。

在排查过程中复现该问题,首页切后台时会触发onSaveInstanceState,会将所有的fragment信息都缓存下来,Bundle大小会达到500+KB,然后就会触发TransactionTooLargeException崩溃。

解法: 在缓存时会根据key进行缓存,只需要在页面的oncreate时将android:support:fragments进行注销,就不会在onSaveInstanceState的时候缓存所有fragment的状态。 bundle的大小也从500+KB降到10KB以下,自然也就不会触发TransactionTooLargeException。