首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >你知道是什么导致了安卓上的非托管代码导致java.util.concurrentModificationException的出现吗?

你知道是什么导致了安卓上的非托管代码导致java.util.concurrentModificationException的出现吗?
EN

Stack Overflow用户
提问于 2021-10-18 19:46:16
回答 2查看 232关注 0票数 0

我不断地从我的Xamarin.Forms应用程序中的Android项目中随机获取以下异常。

代码语言:javascript
运行
AI代码解释
复制
java.util.ConcurrentModificationException: 
  at java.util.ArrayList$Itr.next (ArrayList.java:860)
  at com.telerik.widget.primitives.panels.RadScrollView.notifyLaidOutListeners (RadScrollView.java:153)
  at com.telerik.widget.primitives.panels.RadScrollView.onLayout (RadScrollView.java:2092)
  at android.view.View.layout (View.java:24475)
  at android.view.ViewGroup.layout (ViewGroup.java:7383)
  at crc643f46942d9dd1fff9.ViewRenderer_2.n_onLayout (Native Method)
  at crc643f46942d9dd1fff9.ViewRenderer_2.onLayout (ViewRenderer_2.java:47)
  at android.view.View.layout (View.java:24475)
  at android.view.ViewGroup.layout (ViewGroup.java:7383)
  at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout (FormsViewGroup.java:37)
  at crc643f46942d9dd1fff9.Platform_DefaultRenderer.n_onLayout (Native Method)
  at crc643f46942d9dd1fff9.Platform_DefaultRenderer.onLayout (Platform_DefaultRenderer.java:72)
  at android.view.View.layout (View.java:24475)
  at android.view.ViewGroup.layout (ViewGroup.java:7383)
  at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout (FormsViewGroup.java:37)
  at crc643f46942d9dd1fff9.Platform_DefaultRenderer.n_onLayout (Native Method)
  at crc643f46942d9dd1fff9.Platform_DefaultRenderer.onLayout (Platform_DefaultRenderer.java:72)
  at android.view.View.layout (View.java:24475)
  at android.view.ViewGroup.layout (ViewGroup.java:7383)
  at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout (FormsViewGroup.java:37)
  at crc643f46942d9dd1fff9.Platform_DefaultRenderer.n_onLayout (Native Method)
  at crc643f46942d9dd1fff9.Platform_DefaultRenderer.onLayout (Platform_DefaultRenderer.java:72)
  at android.view.View.layout (View.java:24475)
  at android.view.ViewGroup.layout (ViewGroup.java:7383)
  at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout (FormsViewGroup.java:37)
  at crc64ee486da937c010f4.FrameRenderer.n_onLayout (Native Method)
  at crc64ee486da937c010f4.FrameRenderer.onLayout (FrameRenderer.java:47)
  at android.view.View.layout (View.java:24475)
  at android.view.ViewGroup.layout (ViewGroup.java:7383)
  at crc643f46942d9dd1fff9.Platform_DefaultRenderer.n_onLayout (Native Method)
  at crc643f46942d9dd1fff9.Platform_DefaultRenderer.onLayout (Platform_DefaultRenderer.java:72)
  at android.view.View.layout (View.java:24475)
  at android.view.ViewGroup.layout (ViewGroup.java:7383)
  at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout (FormsViewGroup.java:37)
  at crc643f46942d9dd1fff9.Platform_DefaultRenderer.n_onLayout (Native Method)
  at crc643f46942d9dd1fff9.Platform_DefaultRenderer.onLayout (Platform_DefaultRenderer.java:72)
  at android.view.View.layout (View.java:24475)
  at android.view.ViewGroup.layout (ViewGroup.java:7383)
  at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout (FormsViewGroup.java:37)
  at crc643f46942d9dd1fff9.ScrollViewContainer.n_onLayout (Native Method)
  at crc643f46942d9dd1fff9.ScrollViewContainer.onLayout (ScrollViewContainer.java:46)
  at android.view.View.layout (View.java:24475)
  at android.view.ViewGroup.layout (ViewGroup.java:7383)
  at android.widget.FrameLayout.layoutChildren (FrameLayout.java:332)
  at android.widget.FrameLayout.onLayout (FrameLayout.java:270)
  at androidx.core.widget.NestedScrollView.onLayout (NestedScrollView.java:1854)
  at crc643f46942d9dd1fff9.ScrollViewRenderer.n_onLayout (Native Method)
  at crc643f46942d9dd1fff9.ScrollViewRenderer.onLayout (ScrollViewRenderer.java:91)
  at android.view.View.layout (View.java:24475)
  at android.view.ViewGroup.layout (ViewGroup.java:7383)
  at crc643f46942d9dd1fff9.Platform_DefaultRenderer.n_onLayout (Native Method)
  at crc643f46942d9dd1fff9.Platform_DefaultRenderer.onLayout (Platform_DefaultRenderer.java:72)
  at android.view.View.layout (View.java:24475)
  at android.view.ViewGroup.layout (ViewGroup.java:7383)
  at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout (FormsViewGroup.java:37)
  at crc643f46942d9dd1fff9.PageRenderer.n_onLayout (Native Method)
  at crc643f46942d9dd1fff9.PageRenderer.onLayout (PageRenderer.java:72)
  at android.view.View.layout (View.java:24475)
  at android.view.ViewGroup.layout (ViewGroup.java:7383)
  at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout (FormsViewGroup.java:37)
  at crc64720bb2db43a66fe9.NavigationPageRenderer.n_onLayout (Native Method)
  at crc64720bb2db43a66fe9.NavigationPageRenderer.onLayout (NavigationPageRenderer.java:65)
  at android.view.View.layout (View.java:24475)
  at android.view.ViewGroup.layout (ViewGroup.java:7383)
  at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout (FormsViewGroup.java:37)
  at crc64720bb2db43a66fe9.MasterDetailContainer.n_onLayout (Native Method)
  at crc64720bb2db43a66fe9.MasterDetailContainer.onLayout (MasterDetailContainer.java:46)
  at android.view.View.layout (View.java:24475)
  at android.view.ViewGroup.layout (ViewGroup.java:7383)
  at androidx.drawerlayout.widget.DrawerLayout.onLayout (DrawerLayout.java:1231)
  at crc64720bb2db43a66fe9.MasterDetailPageRenderer.n_onLayout (Native Method)
  at crc64720bb2db43a66fe9.MasterDetailPageRenderer.onLayout (MasterDetailPageRenderer.java:68)
  at android.view.View.layout (View.java:24475)
  at android.view.ViewGroup.layout (ViewGroup.java:7383)
  at crc643f46942d9dd1fff9.PlatformRenderer.n_onLayout (Native Method)
  at crc643f46942d9dd1fff9.PlatformRenderer.onLayout (PlatformRenderer.java:55)
  at android.view.View.layout (View.java:24475)
  at android.view.ViewGroup.layout (ViewGroup.java:7383)
  at android.widget.RelativeLayout.onLayout (RelativeLayout.java:1103)
  at android.view.View.layout (View.java:24475)
  at android.view.ViewGroup.layout (ViewGroup.java:7383)
  at android.widget.FrameLayout.layoutChildren (FrameLayout.java:332)
  at android.widget.FrameLayout.onLayout (FrameLayout.java:270)
  at android.view.View.layout (View.java:24475)
  at android.view.ViewGroup.layout (ViewGroup.java:7383)
  at android.widget.FrameLayout.layoutChildren (FrameLayout.java:332)
  at android.widget.FrameLayout.onLayout (FrameLayout.java:270)
  at android.view.View.layout (View.java:24475)
  at android.view.ViewGroup.layout (ViewGroup.java:7383)
  at android.widget.FrameLayout.layoutChildren (FrameLayout.java:332)
  at android.widget.FrameLayout.onLayout (FrameLayout.java:270)
  at android.view.View.layout (View.java:24475)
  at android.view.ViewGroup.layout (ViewGroup.java:7383)
  at android.widget.LinearLayout.setChildFrame (LinearLayout.java:1829)
  at android.widget.LinearLayout.layoutVertical (LinearLayout.java:1673)
  at android.widget.LinearLayout.onLayout (LinearLayout.java:1582)
  at android.view.View.layout (View.java:24475)
  at android.view.ViewGroup.layout (ViewGroup.java:7383)
  at android.widget.FrameLayout.layoutChildren (FrameLayout.java:332)
  at android.widget.FrameLayout.onLayout (FrameLayout.java:270)
  at com.android.internal.policy.DecorView.onLayout (DecorView.java:1225)
  at android.view.View.layout (View.java:24475)
  at android.view.ViewGroup.layout (ViewGroup.java:7383)
  at android.view.ViewRootImpl.performLayout (ViewRootImpl.java:4260)
  at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:3695)
  at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:2618)
  at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:9971)
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1010)
  at android.view.Choreographer.doCallbacks (Choreographer.java:809)
  at android.view.Choreographer.doFrame (Choreographer.java:744)
  at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:995)
  at android.os.Handler.handleCallback (Handler.java:938)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loop (Looper.java:246)
  at android.app.ActivityThread.main (ActivityThread.java:8538)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:602)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1130)

这似乎是随机发生的,我只是希望有人面对同样的问题,并对该做什么有一个想法?我无法调试,因为它来自非托管代码。任何可能导致这一问题的想法和任何潜在的解决办法都将受到极大的赞赏。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-20 07:24:12

经过大量调试,发现这与水平滚动控件(Telerik DataGrid )在垂直滚动布局(Scrollview)中有一个有关,然后当DataGrid中的条目集中时,尝试在DataGrid上使用DataGrid。

为了解决这个问题,在我的OnAppearing()覆盖中,我检查了Device.RuntimePlatform是否是Android,并通过使用视图模型中的IsVisible绑定属性来检查DataGrid控制是否是可见的,然后删除它。该控件位于网格中,因此我能够使用控件的x:Names并调用.Children.Remove().来完成此操作。

然后使用Device.RuntimePlatform来检查设备是否为Android,以及是否没有调用ScrollToAsync()

所以代码看起来像是:

代码语言:javascript
运行
AI代码解释
复制
var vm = BindingContext as MyViewModelName;
if (Device.RuntimePlatform == Device.Android && !vm.DataGridIsVisible){
    MyGridControl.Children.Remove(MyDataGridControl);
}

注意,这里的MyGridControlMyDataGridControl是控件的X:Name属性。

票数 0
EN

Stack Overflow用户

发布于 2021-10-19 17:38:49

由于您只提供错误信息,因此此错误通常出现在ArrayList的迭代中。

主要原因是modCountexpectedModCount的值由于调用list.remove()方法而不一致。

如果使用迭代器,则可以通过直接调用Iterator.remove()来避免此错误。

如果您只是调用API而没有其他操作,那么内部接口也会出现类似的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69624871

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文