【问题标题】:RuntimeException when converting graphics to RGB_565将图形转换为 RGB_565 时出现 RuntimeException
【发布时间】:2017-06-27 21:01:13
【问题描述】:

我的游戏偶尔会收到来自 Google Play 控制台的崩溃报告,我发现很难修复。这种情况比较少见,但到目前为止,它是一些 1 星评价的原因。

这段代码运行得很好,但很少会导致致命错误(它在启动时会立即为用户崩溃)。它没有告诉我 throwIfCannotDraw 跳闸的原因。

非常感谢任何帮助!

编辑:我认为这可能是时间问题,因为它在启动时并且在其他线程中正在进行负载 - 加载/初始化广告网络、分析、Google Play 服务等。有人有这方面的经验吗?

    java.lang.RuntimeException: 
      at android.graphics.Canvas.throwIfCannotDraw(Canvas.java:1301)
      at android.graphics.Canvas.drawBitmap(Canvas.java:1356)

以下是导致崩溃的前几个设备:

Galaxy Tab Pro 12.2 (v2wifi)        6   14.0%
Galaxy Tab Pro 10.1 (picassowifi)   5   11.6%
Galaxy Tap Pro 8.4 (mondrianwifi)   4   9.3%
Galaxy Note 10.1 (lt033g)       3   7.0%
Galaxy TabS 8.4 (klimtwifi)     3   7.0%
Galaxy S7 Edge (hero2lte)       3   7.0%
Zmax Pro (urd)              2   4.7%
Galaxy Note5 (noblelte)         2   4.7%

Android版本好像不是原因:

Android 5.1 14  32.6%
Android 7.0 12  27.9%
Android 4.4 7   16.3%
Android 6.0 6   14.0%

代码:

bitmapTMP1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.map_charset);

bitmapTMP2 = Bitmap.createScaledBitmap(bitmapTMP1,
        (int) (MAP_CHARSET_SX * scaleFactor),
        (int) (MAP_CHARSET_SY * scaleFactor),
        false);

bitmapTMP1.recycle();

bitmapMapCharset = Bitmap.createBitmap( bitmapTMP2.getWidth(), bitmapTMP2.getHeight(), Bitmap.Config.RGB_565 );

Canvas c = new Canvas();
c.setBitmap(bitmapMapCharset);

c.drawBitmap(bitmapTMP2,0,0,null); //HERE - Causes RuntimeException sometimes 

bitmapTMP2.recycle();

【问题讨论】:

    标签: android bitmap runtimeexception


    【解决方案1】:

    找到了。问题出在 scaleFactor = 1 时(发生在非常大的平板电脑上)。 IE。没有缩放,文档说:

    如果指定的宽度和高度与当前宽度相同 和源位图的高度,返回源位图并且没有 新位图已创建。

    所以当我回收我认为是源位图时( bitmapTMP1.recycle();),我实际上是在回收我继续使用的位图。

    不知道为什么 Logcat RuntimeException 不包括“尝试使用回收的位图”。那会很有帮助的...

    【讨论】:

      猜你喜欢
      • 2018-07-18
      • 2012-03-30
      • 1970-01-01
      • 2023-02-24
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      • 1970-01-01
      • 2013-05-13
      相关资源
      最近更新 更多