【发布时间】:2017-04-01 20:04:56
【问题描述】:
致命异常:java.util.concurrent.TimeoutException: android.graphics.Path.finalize() 10 秒后超时 在 android.graphics.Path.finalizer(Path.java) 在 android.graphics.Path.finalize(Path.java:748) 在 java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:202) 在 java.lang.Daemons$FinalizerDaemon.run(Daemons.java:185) 在 java.lang.Thread.run(Thread.java:818)
我在我的一个实时应用程序中遇到了这个错误,我尝试了所有可能的方法来解决这个问题,但仍然没有结果。如果有人能详细告诉我这个问题以及解决方法,那就太好了。提前致谢。
编辑:
我发现了更多日志:
at android.view.GLES20Canvas.nDrawBitmap(GLES20Canvas.java) at android.view.GLES20Canvas.drawBitmap(GLES20Canvas.java:614) at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:545) at android.widget.ImageView.onDraw(ImageView.java:1197) at com.flaviofaria.kenburnsview.KenBurnsView.onDraw(SourceFile:201) at android.view.View.draw(View.java:16536) at android.view.View.updateDisplayListIfDirty(View.java:15466) at android.view.View.getDisplayList(View.java:15488) at android.view.View.draw(View.java:16258) at android.view.ViewGroup.drawChild(ViewGroup.java:3713) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3506) at android.view.View.updateDisplayListIfDirty(View.java:15461) at android.view.View.getDisplayList(View.java:15488) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3697) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3676) at android.view.View.updateDisplayListIfDirty(View.java:15426) at android.view.View.getDisplayList(View.java:15488) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3697) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3676) at android.view.View.updateDisplayListIfDirty(View.java:15426) at android.view.View.getDisplayList(View.java:15488) at android.view.View.draw(View.java:16258) at android.view.ViewGroup.drawChild(ViewGroup.java:3713) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3506) at android.view.View.updateDisplayListIfDirty(View.java:15461) at android.view.View.getDisplayList(View.java:15488) at android.view.View.draw(View.java:16258) at android.view.ViewGroup.drawChild(ViewGroup.java:3713) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3506) at android.view.View.draw(View.java:16539) at android.widget.FrameLayout.draw(FrameLayout.java:598) at android.view.View.updateDisplayListIfDirty(View.java:15466) at android.view.View.getDisplayList(View.java:15488) at android.view.View.draw(View.java:16258) at android.view.ViewGroup.drawChild(ViewGroup.java:3713) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3506) at android.view.View.updateDisplayListIfDirty(View.java:15461) at android.view.View.getDisplayList(View.java:15488) at android.view.View.draw(View.java:16258) at android.view.ViewGroup.drawChild(ViewGroup.java:3713) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3506) at android.view.View.updateDisplayListIfDirty(View.java:15461) at android.view.View.getDisplayList(View.java:15488) at android.view.View.draw(View.java:16258) at android.view.ViewGroup.drawChild(ViewGroup.java:3713) at com.shaiban.audioplayer.mplayer.slidinguppanel.SlidingUpPanelLayout.drawChild(SourceFile:964) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3506) at android.view.View.draw(View.java:16539) at com.shaiban.audioplayer.mplayer.slidinguppanel.SlidingUpPanelLayout.draw(SourceFile:1013) at android.view.View.updateDisplayListIfDirty(View.java:15466) at android.view.View.getDisplayList(View.java:15488) at android.view.View.draw(View.java:16258) at android.view.ViewGroup.drawChild(ViewGroup.java:3713) at android.support.v4.widget.DrawerLayout.drawChild(SourceFile:1377) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3506) at android.view.View.updateDisplayListIfDirty(View.java:15461) at android.view.View.getDisplayList(View.java:15488) at android.view.View.draw(View.java:16258) at android.view.ViewGroup.drawChild(ViewGroup.java:3713) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3506) at android.view.View.updateDisplayListIfDirty(View.java:15461) at android.view.View.getDisplayList(View.java:15488) at android.view.View.draw(View.java:16258) at android.view.ViewGroup.drawChild(ViewGroup.java:3713) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3506) at android.view.View.updateDisplayListIfDirty(View.java:15461) at android.view.View.getDisplayList(View.java:15488) at android.view.View.draw(View.java:16258) at android.view.ViewGroup.drawChild(ViewGroup.java:3713) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3506) at android.view.View.updateDisplayListIfDirty(View.java:15461) at android.view.View.getDisplayList(View.java:15488) at android.view.View.draw(View.java:16258) at android.view.ViewGroup.drawChild(ViewGroup.java:3713) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3506) at android.view.View.updateDisplayListIfDirty(View.java:15461) at android.view.View.getDisplayList(View.java:15488) at android.view.View.draw(View.java:16258) at android.view.ViewGroup.drawChild(ViewGroup.java:3713) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3506) at android.view.View.draw(View.java:16539) at android.widget.FrameLayout.draw(FrameLayout.java:598) at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:3111) at android.view.View.updateDisplayListIfDirty(View.java:15466) at android.view.View.getDisplayList(View.java:15488) at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:309) at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:315) at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:354) at android.view.ViewRootImpl.draw(ViewRootImpl.java:2956) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2753) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2339) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1314) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7057) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:829) at android.view.Choreographer.doCallbacks(Choreographer.java:606) at android.view.Choreographer.doFrame(Choreographer.java:576) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:815) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:7007) at java.lang.reflect.Method.invoke(Method.java) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
【问题讨论】:
-
这意味着对象的终结器花费了太长时间。要么它真的很大,要么线程暂停是出于某种原因——可能是死锁。
-
感谢您的快速回复。知道如何检测代码的哪一部分导致了这种情况吗?因为有了日志,我只能在堆栈跟踪上方看到,并且没有提到来自应用程序代码的来源。
-
它的起源是垃圾收集器。 Finalize 大致类似于一个析构函数,但没有承诺何时/是否会调用它。它在对象被内存收集之前调用。
-
好的。如何解决这个问题?
标签: android