android.graphics.Path.finalize()在10秒后超时的根本原因是什么

时间:2017-04-01 20:04:57

标签: android

  

致命异常: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)

1 个答案:

答案 0 :(得分:0)

好的 - 这是我的回答: 当垃圾收集确定不再有对该对象的引用时,受保护的方法finalize由对象上的垃圾收集器调用。 子类重写finalize方法以处置系统资源或执行其他清理。 就像在Google Developer Documentation

中一样

事实上,我在我的应用程序中遇到了同样的问题,它在第二个方面绘制了数百个路径: 见Visual Sounds Music Visualizer 我的Google Play控制台统计信息表明它仅适用于Android 5.1

java.util.concurrent.TimeoutException: 
1. at android.graphics.Path.finalizer (Native Method)
2. at android.graphics.Path.finalize (Path.java:748)
3. at java.lang.Daemons$FinalizerDaemon.doFinalize (Daemons.java:206)
4. at java.lang.Daemons$FinalizerDaemon.run (Daemons.java:189)
5. at java.lang.Thread.run (Thread.java:818)