Android 应用中的 View.dispatchTouchEvent StackOverflowError

And*_*eas 5 stack-overflow android google-maps

我有一个 android 应用程序,我经常通过 crashlytics (firebase) 看到以下异常。不幸的是,我不知道此错误发生在生命周期的何处,以及此异常是否对用户不利。我想知道这个异常发生在哪个交互以及我应该在我的代码中的哪个位置开始进行进一步分析。我的应用程序显示了包含路线和航点的 Google 地图。我使用带有位图的标记,它实现了某些功能。堆栈跟踪显示实例未正确处理 dispatchTouchEvent(),因此事件可能在循环中保持未处理状态,直到发生 StackOverflowError。我之前怀疑过 onMarkerClick() 方法,但我已经检查过它并确保正确处理和返回 true/false。你能帮我更好地找出原因吗?此处有关此主题的其他问题无法帮助我。

 Fatal Exception: java.lang.StackOverflowError: stack size 8192KB
   at com.google.maps.api.android.lib6.impl.gesture.a.a(a.java:2)
   at com.google.maps.api.android.lib6.impl.gesture.a.a(a.java:2)
   at com.google.maps.api.android.lib6.impl.gesture.a.a(a.java:2)
   at com.google.maps.api.android.lib6.impl.gesture.a.a(a.java:2)
   at com.google.maps.api.android.lib6.impl.gesture.a.a(a.java:2)
   at com.google.maps.api.android.lib6.impl.gesture.a.a(a.java:2)
   at com.google.maps.api.android.lib6.impl.gesture.a.a(a.java:2)
   at com.google.maps.api.android.lib6.impl.gesture.a.a(a.java:2)
   at com.google.maps.api.android.lib6.impl.gesture.a.a(a.java:2)
   at com.google.maps.api.android.lib6.impl.gesture.a.a(a.java:2)
   at com.google.maps.api.android.lib6.impl.gesture.l.a(l.java:5)
   at com.google.maps.api.android.lib6.impl.gesture.h.b(h.java:17)
   at com.google.maps.api.android.lib6.impl.gesture.b.a(b.java:5)
   at com.google.maps.api.android.lib6.gmm6.vector.ae.onTouchEvent(ae.java)
   at android.view.View.dispatchTouchEvent(View.java:13503)
   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2766)
   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2766)
   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2766)
   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2766)
   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2766)
   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2766)
   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2766)
   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2766)
   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2766)
   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2766)
   at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:613)
   at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1933)
   at android.app.Activity.dispatchTouchEvent(Activity.java:4147)
   at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
   at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
   at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:559)
   at android.view.View.dispatchPointerEvent(View.java:13766)
   at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5824)
   at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5619)
   at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5063)
   at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5116)
   at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5082)
   at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5239)
   at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5090)
   at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5296)
   at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5063)
   at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5116)
   at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5082)
   at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5090)
   at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5063)
   at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7954)
   at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7905)
   at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7859)
   at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:8144)
   at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:233)
   at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(InputEventReceiver.java)
   at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:215)
   at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:8071)
   at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:8187)
   at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1057)
   at android.view.Choreographer.doCallbacks(Choreographer.java:875)
   at android.view.Choreographer.doFrame(Choreographer.java:769)
   at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1042)
   at android.os.Handler.handleCallback(Handler.java:888)
   at android.os.Handler.dispatchMessage(Handler.java:100)
   at android.os.Looper.loop(Looper.java:213)
   at android.app.ActivityThread.main(ActivityThread.java:8178)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)
Run Code Online (Sandbox Code Playgroud)