TransactionTooLargeExceptions on Android 7

问题

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

原因

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

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

解决办法

1、定位
小项目可以直接去定位是哪个activity/fragment,但是大项目有多个act、frg,所以这里需要使用工具:toolargetool

工具使用(具体的使用已经在md文档里说明):添加依赖、初始化工具、在控制台查看日志

  • 如果不能成功导入依赖,
    那么只需要在项目的build.gradle里:buildscript-repositories、allprojects-repositories这两个地方都添加maven库)
  • 因为工具库已由kotlin编写,所以导入项目如果遇到报错:Failed resolution of: Lkotlin/jvm/internal/Intrinsics
    可引入implementation "com.mapzen:on-the-road:0.8.4"解决)

更多请见:每日一问 | Activity与Fragment的那些事,“用起来没问题,我都要走了,你崩溃了?”

你可能感兴趣的:(android)