android4.4 手机报错 Comparison method violates its general contract!

最近在开发项目的过程中,测试反馈了一个bug,崩溃日志如下: 

  1. java.lang.IllegalArgumentException: Comparison method violates its general contract!
  2. at java.util.ComparableTimSort.mergeHi(ComparableTimSort.java:831)
  3. at java.util.ComparableTimSort.mergeAt(ComparableTimSort.java:449)
  4. at java.util.ComparableTimSort.mergeCollapse(ComparableTimSort.java:372)
  5. at java.util.ComparableTimSort.sort(ComparableTimSort.java:178)
  6. at java.util.ComparableTimSort.sort(ComparableTimSort.java:142)
  7. at java.util.Arrays.sort(Arrays.java:1970)
  8. at java.util.Collections.sort(Collections.java:1864)
  9. at android.view.ViewGroup$ChildListForAccessibility.init(ViewGroup.java:6641)
  10. at android.view.ViewGroup$ChildListForAccessibility.obtain(ViewGroup.java:6606)
  11. at android.view.ViewGroup.addChildrenForAccessibility(ViewGroup.java:1689)
  12. at android.view.ViewGroup.onInitializeAccessibilityNodeInfoInternal(ViewGroup.java:2517)
  13. at android.view.View.onInitializeAccessibilityNodeInfo(View.java:5193)
  14. at android.view.View.createAccessibilityNodeInfoInternal(View.java:5154)
  15. at android.view.View.createAccessibilityNodeInfo(View.java:5141)
  16. at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:811)
  17. at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:834)
  18. at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:834)
  19. at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:834)
  20. at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:834)
  21. at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:834)
  22. at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:834)
  23. at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:834)
  24. at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:834)
  25. at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:834)
  26. at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchAccessibilityNodeInfos(AccessibilityInteractionController.java:720)
  27. at android.view.AccessibilityInteractionController.findAccessibilityNodeInfoByAccessibilityIdUiThread(AccessibilityInteractionController.java:147)
  28. at android.view.AccessibilityInteractionController.access$300(AccessibilityInteractionController.java:49)
  29. at android.view.AccessibilityInteractionController$PrivateHandler.handleMessage(AccessibilityInteractionController.java:971)
  30. at android.os.Handler.dispatchMessage(Handler.java:102)
  31. at android.os.Looper.loop(Looper.java:136)
  32. at android.app.ActivityThread.main(ActivityThread.java:5314)
  33. at java.lang.reflect.Method.invokeNative(Native Method)
  34. at java.lang.reflect.Method.invoke(Method.java:515)
  35. at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
  36. at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:680)
  37. at dalvik.system.NativeStart.main(Native Method)

一开始看到这个崩溃日志一脸懵逼,这分明是系统ViewGroup内部调用了排序算法报的错,这不知道怎么入手。百度了一大圈,发现都是说JDK1.7的排序算法改了,但是app没有用到排序算法,所以我遇到的根本问题不是排序导致的问题。百度找不到,还有谷歌,果然还是能找到比较相关的问题。其中看到一篇文章https://www.b4x.com/android/forum/threads/debugging-a-problematic-comparison.41313/#content 里面的一个回答给了我提示 

 意思就是说如果你的布局ViewGroup里面有两个或者两个以上的子控件的topleft xy是一样的情况下就会导致这个异常。这就有思路了,马上检查布局,果然发现是一个约束布局,

app:layout_constraintStart_toStartOf="@+id/red_envelope_home_photo_iv"
app:layout_constraintTop_toTopOf="@+id/red_envelope_home_photo_iv"

用到了这两个属性,这就导致xy是一样的,马上把另外一个去掉,就不崩溃了。用了一天解决的问题,记录下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值