【问题标题】:Android Studio: App keeps crashing on startAndroid Studio:应用程序在启动时不断崩溃
【发布时间】:2017-10-13 16:44:51
【问题描述】:

一些非常奇怪的事情发生在我身上。上次我通过 Android Studio 运行我的应用程序时,它运行良好。然后第二次,即使我没有更改任何内容,它也会在打开时崩溃。这是logcat:

05-14 20:13:45.718 25075-25082/? E/art:向调试器发送回复失败:管道损坏 05-14 20:13:46.644 25075-25075/? E/AndroidRuntime: 致命异常: main 进程:com.breunig.nathan.progressbarderby,PID:25075 java.lang.RuntimeException: Canvas: 试图绘制太大(118692000bytes) 位图。 在 android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:260) 在 android.graphics.Canvas.drawBitmap(Canvas.java:1415) 在 android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:528) 在 android.widget.ImageView.onDraw(ImageView.java:1316) 在 android.view.View.draw(View.java:17185) 在 android.view.View.updateDisplayListIfDirty(View.java:16167) 在 android.view.View.draw(View.java:16951) 在 android.view.ViewGroup.drawChild(ViewGroup.java:3727) 在 android.support.design.widget.CoordinatorLayout.drawChild(CoordinatorLayout.java:1230) 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:3513) 在 android.view.View.draw(View.java:17188) 在 android.view.View.updateDisplayListIfDirty(View.java:16167) 在 android.view.View.draw(View.java:16951) 在 android.view.ViewGroup.drawChild(ViewGroup.java:3727) 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:3513) 在 android.view.View.updateDisplayListIfDirty(View.java:16162) 在 android.view.View.draw(View.java:16951) 在 android.view.ViewGroup.drawChild(ViewGroup.java:3727) 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:3513) 在 android.view.View.updateDisplayListIfDirty(View.java:16162) 在 android.view.View.draw(View.java:16951) 在 android.view.ViewGroup.drawChild(ViewGroup.java:3727) 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:3513) 在 android.view.View.updateDisplayListIfDirty(View.java:16162) 在 android.view.View.draw(View.java:16951) 在 android.view.ViewGroup.drawChild(ViewGroup.java:3727) 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:3513) 在 android.view.View.updateDisplayListIfDirty(View.java:16162) 在 android.view.View.draw(View.java:16951) 在 android.view.ViewGroup.drawChild(ViewGroup.java:3727) 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:3513) 在 android.view.View.draw(View.java:17188) 在 com.android.internal.policy.DecorView.draw(DecorView.java:754) 在 android.view.View.updateDisplayListIfDirty(View.java:16167) 在 android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:648) 在 android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:654) 在 android.view.ThreadedRenderer.draw(ThreadedRenderer.java:762) 在 android.view.ViewRootImpl.draw(ViewRootImpl.java:2800) 在 android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2608) 在 android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2215) 在 android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254) 在 android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6338) 在 android.view.Choreographer$CallbackRecord.run(Choreographer.java:874) 在 android.view.Choreographer.doCallbacks(Choreographer.java:686) 在 android.view.Choreographer.doFrame(Choreographer.java:621) 在 android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860) 在 android.os.Handler.handleCallback(Handler.java:751) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6121) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)

没有意义。我曾尝试清理和重建项目,但没有成功。任何帮助,将不胜感激。谢谢。

【问题讨论】:

  • 你试过清理和重建吗?
  • Canvas 的错误状态:试图绘制太大(118692000bytes) 位图..请减少布局中的图像

标签: android android-studio android-fragments


【解决方案1】:

看起来您正在使用画布无法处理的非常大的位图。也许您可以更改要显示的图像资源。

【讨论】:

    【解决方案2】:

    Java.lang.RuntimeException: Canvas: 试图画过大(118692000bytes)bitmap

    您正试图在Canvas 上绘制一个非常大的Bitmap(around 118MB)。要解决此错误,请尝试减小 bitmap 的大小并使用 canvas

    也可以使用Bitmap decoding方法:

    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeResource(getResources(), R.id.myimage, options);
    int imageHeight = options.outHeight;
    int imageWidth = options.outWidth;
    String imageType = options.outMimeType;
    

    请参阅有关 Loading Large Bitmaps Efficiently 的文档

    希望对你有帮助~

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-27
      • 2021-09-17
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多