我的应用在某些设备上崩溃了,而在其他设备上却可以正常工作。我的应用程序用户之一向我发送了此异常:

java.lang.RuntimeException: Canvas: trying to draw too large(132710400bytes) bitmap.
        at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:260)
        at android.graphics.Canvas.drawBitmap(Canvas.java:1415)
        at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:545)
        at android.widget.ImageView.onDraw(ImageView.java:1286)
        at android.view.View.draw(View.java:17099)
        at android.view.View.updateDisplayListIfDirty(View.java:16081)
        at android.view.View.draw(View.java:16865)
        at android.view.ViewGroup.drawChild(ViewGroup.java:3766)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3552)
        at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:2023)
        at android.view.View.updateDisplayListIfDirty(View.java:16076)
        at android.view.View.draw(View.java:16865)
        at android.view.ViewGroup.drawChild(ViewGroup.java:3766)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3552)
        at android.view.View.updateDisplayListIfDirty(View.java:16076)
        at android.view.View.draw(View.java:16865)
        at android.view.ViewGroup.drawChild(ViewGroup.java:3766)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3552)
        at android.view.View.updateDisplayListIfDirty(View.java:16076)
        at android.view.View.draw(View.java:16865)
        at android.view.ViewGroup.drawChild(ViewGroup.java:3766)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3552)
        at android.view.View.updateDisplayListIfDirty(View.java:16076)
        at android.view.View.draw(View.java:16865)
        at android.view.ViewGroup.drawChild(ViewGroup.java:3766)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3552)
        at android.view.View.updateDisplayListIfDirty(View.java:16076)
        at android.view.View.draw(View.java:16865)
        at android.view.ViewGroup.drawChild(ViewGroup.java:3766)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3552)
        at android.view.View.draw(View.java:17102)
        at com.android.internal.policy.DecorView.draw(DecorView.java:754)
        at android.view.View.updateDisplayListIfDirty(View.java:16081)
        at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:666)
        at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:672)
        at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:780)
        at android.view.ViewRootImpl.draw(ViewRootImpl.java:2840)
        at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2648)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2255)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1290)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6399)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:873)
        at android.view.Choreographer.doCallbacks(Choreographer.java:685)
        at android.view.Choreographer.doFrame(Choreographer.java:621)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:859)
        at android.os.Handler.handleCallback(Handler.java:754)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:165)
        at android.app.ActivityThread.main(ActivityThread.java:6375)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)


我的问题是:

这是什么错误,为什么是特定于设备的?

为什么会发生以及如何解决?

最佳答案

我前段时间有同样的问题。减小PNG资源的大小,或者尽可能使用Vectors!

您可以使用一些在线工具,例如this one来减小尺寸。

关于java - 什么是某些Android设备上的应用程序崩溃的原因,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61176482/

10-11 20:10
查看更多