В чем причина приложения cra sh на некоторых android устройствах? - PullRequest
0 голосов
/ 12 апреля 2020

На некоторых устройствах происходит сбой моего приложения, а на других оно работает нормально. Один из пользователей моего приложения прислал мне это исключение:

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)

Мои вопросы:

Что это за ошибка и почему указывается устройство c?

Почему это произошло и как это исправить?

1 Ответ

0 голосов
/ 13 апреля 2020

У меня когда-то была такая же проблема go. Уменьшите размер ваших ресурсов PNG или используйте векторы, если это возможно!

Вы можете использовать какой-нибудь онлайн-инструмент, например , этот , чтобы выполнить уменьшение размера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...