【问题标题】:Android production app, rare out-of-bounds-exception crashAndroid 生产应用,罕见的越界异常崩溃
【发布时间】:2020-08-29 07:10:38
【问题描述】:

Android 应用罕见的生产越界异常。

我的生产应用有时会出现罕见的越界异常崩溃,这种情况仅发生在三星 Galaxy Tab A (2016)、2048 MB RAM、Android 8.1 上。我无法正确诊断哪个索引是 OOB。我也看不出任何索引怎么可能是错误的。我错过了一些明显的东西,有人可以帮忙吗?

该应用有 1.0、1.1、1.2 和 1.3 版本。

在 3 月 30 日的 v 1.0 中,以及本周在 5 月 11 日的 v 1.2 中,都有关于这种情况的崩溃报告,

虽然我无法诊断它,但我尝试了一些修复 1.0 3 月 30 日崩溃的问题。这些“修复”在 1.2 版中有效。因此,继续前进,本周 5 月 11 日,1.2 发生了类似的崩溃(实际上几个小时内发生了 5 次崩溃,都在同一台设备上)。

代码是:

    public Bitmap[][] balloonBitmap = new Bitmap[6][6];

    public int[] dynamicObjectRId = new int[10];


for (int j = 1; j <= totalNoOfDynamicImages; j++) {


    // PROD CRASH March 30th: OOB was on the next line 
    **balloonBitmap[correctOptionColourNo][j] = ImageUtil.loadImage(res, db.dynamicObjectRId[j], 
    dynamicImageWidthQT3, dynamicImageHeightQT3)**;

    // PROD CRASH May 11th seems to be on this line:
    *byteCountforBitmaps += balloonBitmap[correctOptionColourNo][j].getByteCount();*

    }

我尝试的修复是在方法的前面完成的:(活在 v1.2 中)

if  ((correctOptionColourNo < 0) || (correctOptionColourNo > 5)) {
    correctOptionColourNo = 3;
}

So correctOptionColourNo should be ok, not OOB.

5 月 11 日的 OOB 似乎在下一个声明中:

byteCountforBitmaps += balloonBitmap[correctOptionColourNo][j].getByteCount();

但是,我不确定我是否可以完全相信这一点,因为前面的陈述肯定会首先 OOB。无论如何,我的 v 1.2 代码备份指向这行代码——我只是不相信它。但无论哪一行是实际的违规代码,它仍然是同一个问题,哪个索引是 OOB,为什么会发生?

【问题讨论】:

    标签: android indexoutofboundsexception production


    【解决方案1】:

    我怀疑问题出在这里:for (int j = 1; j &lt;= totalNoOfDynamicImages; j++)

    尝试将其更改为for (int j = 0; j &lt; totalNoOfDynamicImages; j++)

    【讨论】:

    • 泰。我知道这可能被认为是不好的做法,但我只使用数组中的元素 1 到 5。 totalNoOfDynamicImages 由 sqllite 调用设置,该调用查找符合特定条件的行数,此处将返回最大值 5。请记住,该应用程序在生产中经常使用,因此 99.9% 的时间没有 oob它仅在此三星 Tab A 设备上。我想知道它正在读取 totalNoOfDynamicImages 的表是否有某种错误(虽然我看不出它是怎么回事),也许是这个设备上的数据库问题。表格由应用程序创建。
    • totalNoOfDynamicImages = db.readDynamicObject("9", Integer.toString(21 + correctOptionColourNo - 1); 此 SQL 调用将始终返回 5(如果表如我所料)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 2016-12-23
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多