android - Android 动态功能导航 DynamicIncludeGraphNavigator ConcurrentModificationException
问题描述
我对Android 动态功能导航有疑问。当我在长时间不活动(或启用不保持活动选项)后回到应用程序时,我的应用程序崩溃了。崩溃来自DynamicIncludeGraphNavigator.onRestoreState()
方法,是由java.util.ConcurrentModificationException
. 有谁知道如何解决这个问题?
库版本:2.3.0-alpha04
完整的堆栈跟踪:
Caused by: android.view.InflateException: Binary XML file line #19 in activity_main: Error inflating class fragment
Caused by: java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.remove(ArrayList.java:875)
at androidx.navigation.dynamicfeatures.DynamicIncludeGraphNavigator.onRestoreState(DynamicIncludeGraphNavigator.kt:122)
at androidx.navigation.NavController.onGraphCreated(NavController.java:595)
at androidx.navigation.NavController.setGraph(NavController.java:583)
at androidx.navigation.NavController.setGraph(NavController.java:548)
at androidx.navigation.NavController.setGraph(NavController.java:530)
at androidx.navigation.fragment.NavHostFragment.onCreate(NavHostFragment.java:237)
at androidx.fragment.app.Fragment.performCreate(Fragment.java:2684)
at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:280)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1175)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356)
at androidx.fragment.app.FragmentLayoutInflaterFactory.onCreateView(FragmentLayoutInflaterFactory.java:135)
at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:135)
at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:356)
at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:335)
at android.view.LayoutInflater.tryCreateView(LayoutInflater.java:1069)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:997)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:961)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1123)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084)
at android.view.LayoutInflater.inflate(LayoutInflater.java:682)
at android.view.LayoutInflater.inflate(LayoutInflater.java:534)
at android.view.LayoutInflater.inflate(LayoutInflater.java:481)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
at androidx.databinding.DataBindingUtil.setContentView(DataBindingUtil.java:303)
at androidx.databinding.DataBindingUtil.setContentView(DataBindingUtil.java:284)
DynamicIncludeGraphNavigator.onRestoreState()
内容:
override fun onRestoreState(savedState: Bundle) {
super.onRestoreState(savedState)
val iterator = createdDestinations.iterator()
while (iterator.hasNext()) {
val dynamicNavGraph = iterator.next()
val moduleName = dynamicNavGraph.moduleName
if (moduleName == null || !installManager.needsInstall(moduleName)) {
replaceWithIncludedNav(dynamicNavGraph)
}
iterator.remove()
}
}
解决方案
推荐阅读
- delphi - 为什么我的 .dfm 文件中存储了 Text = ''?默认情况下,不应存储空字符串
- python - Dask 连接高内存使用
- c# - Blazor webassembly access-control-allow-origin 错误和 Google API
- javascript - 如何区分 Microsoft 文件类型和 base64 字符串?
- digital-ocean - 获取 GOOGLE_APPLICATION_CREDENTIALS 以在 Digital Ocean 中工作
- nginx - Nginx 重写 - 从 URL 中删除静态资产的路径段?
- amazon-dynamodb - 如何将主键传递给 DynamoDB 中的 put_item 以获取嵌套 JSON
- woocommerce - Woocommerce:在管理产品页面中以小数显示价格
- azure - 使用 azure 数据工厂中的复制活动解压缩包含多个文本文件的文件
- r - 与 R 中的 python 掩码方法类似的功能