admin管理员组

文章数量:1642437

commitNowAllowingStateLoss导致的FragmentManager is already executing transactions

fragment版本1.3.6

异常日志

Fatal Exception: java.lang.IllegalStateException
FragmentManager is already executing transactions
androidx.fragment.app.FragmentManager.ensureExecReady (FragmentManager.java:4)
androidx.fragment.app.FragmentManager.execSingleAction (FragmentManager.java:11)
androidx.fragment.app.BackStackRecordmitNowAllowingStateLoss (BackStackRecord.java:2)

原因分析

查看源码发现发生这个异常是因为FragmentManager一次操作未结束时又进行了下一次操作。(通过mExecutingActions这个变量进行判定的)

说明有两次Fragment操作很接近,并且因为是commitNowAllowingStateLoss,代码是同步的且所有相关操作都在主线程,不存在多线程。所以一般应该是发生了嵌套行为。即:

mExecutingActions 

本文标签: FragmentManagercommitNowAllowingStateLossTRANSACTIONSexecuting