安卓制作应用,罕见的越界异常崩溃事件

问题描述 投票:0回答:1

安卓应用罕见的制作出界异常。

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

该应用程序有prod版本1.0,1.1,1.2 & 1.3。

在3月30日的1.0版本中出现了崩溃报告,本周5月11日的1.2版本中又出现了这种情况。

虽然我无法诊断它,但我尝试对1.0 3月30日的崩溃进行了一些修复。 这些 "修复 "在1.2版本中已经上线。 因此,继续前进,1.2在本周5月11日发生了类似的崩溃(实际上是在几个小时内发生了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'd。 反正我的v1.2代码备份指向这行代码--我就是不相信这行代码。 但不管是哪一行实际违规的代码,还是同样的问题,哪个索引是OOB的,为什么会出现这种情况?

android indexoutofboundsexception production
1个回答
0
投票

我怀疑问题出在这里。for (int j = 1; j <= totalNoOfDynamicImages; j++)

试着把它改成 for (int j = 0; j < totalNoOfDynamicImages; j++)

© www.soinside.com 2019 - 2024. All rights reserved.