【问题标题】:NullPointerException GLES20RecordingCanvas.drawBitmap 4.0.3 & 4.0.4NullPointerException GLES20RecordingCanvas.drawBitmap 4.0.3 & 4.0.4
【发布时间】:2015-04-07 11:32:36
【问题描述】:

我在 Play 商店中看到了我的应用程序的崩溃报告,但我不知道这个问题。我想了解如果我使用“hardwareAccelerated false”,这是有用的方法吗?或者这个问题的原因是什么?我怎么解决这个问题。具有 4.0.3 和 4.0.4 的设备会遇到此崩溃

崩溃日志:https://gist.github.com/semihozkoroglu/30be3fda7257d002e2fe

java.lang.NullPointerException
at android.view.GLES20RecordingCanvas.drawBitmap(GLES20RecordingCanvas.java:118)
at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:393)
at android.view.View.draw(View.java:10968)
at android.view.ViewGroup.drawChild(ViewGroup.java:2887)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
at com.slidingmenu.lib.CustomViewAbove.dispatchDraw(CustomViewAbove.java:1067)
at android.view.View.draw(View.java:10986)
at android.view.View.getDisplayList(View.java:10422)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2597)
at android.view.View.getDisplayList(View.java:10385)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2597)
at android.view.View.getDisplayList(View.java:10385)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2597)
at android.view.View.getDisplayList(View.java:10385)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2597)
at android.view.View.getDisplayList(View.java:10385)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2597)
at android.view.View.getDisplayList(View.java:10385)
at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:849)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:1910)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1634)
at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)

谢谢。

【问题讨论】:

  • 这个问题你解决了吗?

标签: android performance


【解决方案1】:

我相信您可以通过使用drawBitmap 方法之一来解决此问题,该方法接受您要渲染的源图像的矩形作为参数。这是一些特定版本的 Android 中的一个错误,其中将整个图像绘制到画布的默认行为不起作用。

假设您想要绘制整个位图,您的代码可能如下所示:

canvas.drawBitmap(bitmap, new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()), bitmapPosition, paint);

【讨论】:

  • 嗨@dave,感谢您的回复,但我无法渲染任何图像,我只在SlidingMenu 左侧菜单上使用ImageView。当基类调用 com.slidingmenu.lib.CustomViewAbove.dispatchDraw 时发生了这个崩溃,我认为这个问题与 OpenGL ES 2.0 有关。也许你可以看看
  • 您可能不得不为特定版本的 Android 禁用硬件加速,如果您支持旧版本,则需要使用反射来执行此操作。见developer.android.com/guide/topics/graphics/hardware-accel.html
【解决方案2】:

如果您使用动画,也许您可​​以尝试将“删除视图”发布到 UI 线程? 我遇到了和你一样的堆栈。但我认为这是根本原因。

How to remove a View when animation ends?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 2014-05-12
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    相关资源
    最近更新 更多