【发布时间】:2021-01-07 16:04:15
【问题描述】:
Android 11 上是否有任何明显的生命周期变化,任何人都注意到了?
我的应用在 Android 11 之前的操作系统上运行良好,但在我的 Pixel 4 上每次都因错误而崩溃:
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.IllegalStateException: Fragment host has been destroyed
是否有任何其他人注意到只会影响他们在 Android 11 上的应用的幕后情况?
我正在为活动和片段使用不同的文件。
我有一个调用 onCreate 的TreasureHuntActivity:
val fragmentTransaction = fragmentManager.beginTransaction()
fragmentTransaction.replace(R.id.container, TreasureHuntMapFragment.newInstance(), "map-${index}").addToBackStack("map-${index}").commit()
fragmentManager.executePendingTransactions()
在TreasureHuntMapFragment它调用
val intent = Intent(context, MainUnityActivity::class.java)
activity.startActivityForResult(intent, 33)
Handler().postDelayed({ activity.pushQuestionHintFragment() }, 1000)
回到TreasureHuntActivity它调用TreasureHuntQuestionHintFragment来显示
fun pushQuestionHintFragment() {
val fragmentTransaction = fragmentManager.beginTransaction()
fragmentTransaction.replace(R.id.container, TreasureHuntQuestionHintFragment.newInstance(), "questionHintFragment-${specificQuestionId}").addToBackStack("questionHintFragment-${specificQuestionId}").commitAllowingStateLoss()
fragmentManager.executePendingTransactions()
}
这适用于 Android 11 之前的版本,它可以完美运行,如上所述,它现在不适用于 11+。随着进一步调试,它显示fragmentManager 为空,之前声明为
var fragmentManager = supportFragmentManager
全球TreasureHuntActivity
如果我在 Pixel 2(Android 的早期版本)上进行调试,fragmentManager 不为空,而是BackStackEntry。
我尝试将生命周期或片段更新为 2.2.0 或 2.3.0-alpha07 为 1.3.0,但仍然没有任何乐趣。
fragmentManager 仅在 Android 11 运行时调用 pushQuestionHintFragment() 时为空。如果我调试,this.isDestroyed 也是如此,但仅限于 Android 11。
【问题讨论】:
标签: android kotlin android-fragments android-activity android-11