- TransactionTooLargeException 解决办
- TransactionTooLargeException问题解决
- TransactionTooLargeException
- TransactionTooLargeException
- 关于Android引发TransactionTooLargeEx
- 问题:TransactionTooLargeException:
- 处理 TransactionTooLargeException
- Android Activity间Intent传递数据报Tra
- Intent数据大小限制及TransactionTooLarge
- TransactionTooLargeException 之 N
![](https://img.haomeiwen.com/i4237968/bc846345c84292b5.png)
原因是使用了Fragment+ViewPager2+FragmentStatePagerAdapter
如果使用了 FragmentStatePagerAdapter 作为 fragment 适配器,为了尽可能过缓存下浏览过的 fragment 以获得更好的体验,承载多个 FragmentStatePagerAdapter#saveState 会被调用并对每一个 fragment 的 bundle 数据进行保存。并且保存下来的 bundle 并不会因为 fragment 被销毁而销毁,所以需要保存的 bundle 数据会一直增长,直到出现TransactionTooLargeException 异常
FragmentStateAdapter源码:
![](https://img.haomeiwen.com/i4237968/938eb516d5b6dca5.png)
stackoverflow的解决方案
上面的解决方案是重写saveState方法,但是最新的代码已经无法实现重写了
![](https://img.haomeiwen.com/i4237968/537e21cb1f5ae651.png)
解决方案:
最终是在Fragment中,通过argument获取完数据后,马上调用arguments.clear方法,将数据清空,这样在saveState的时候就不会保存大量数据了
Tips:此工具 toolargetool 可以在开发中实时观测页面内存变化。
网友评论