【问题标题】:Android / Java rare and seemingly impossible exception causing force closeAndroid / Java罕见且看似不可能的异常导致强制关闭
【发布时间】:2011-02-09 13:09:18
【问题描述】:

我发布了一个 Android 应用程序,向我报告了一个有趣的问题。我有一个二维数组,我正在使用两个 for 循环进行迭代,如下所示:

for (int i = 0; i < arr.length; ++i)
{
    for (int j = 0; j < arr[i].length; ++j)
    {
        if (arr[i][j] != 0)
            // does stuff
    }
}

问题是,arr[i][j] != 0 以某种方式抛出了 ArrayIndexOutOfBoundsException。但很少。我每天都有成千上万的人使用该应用程序,并且可能会收到 20 份强制关闭报告。

这是我无法避免的事情,可能是手机内存问题等,还是我可以做一些我还没有想到的事情?谢谢。

【问题讨论】:

  • 它可能不仅仅是循环控制,因为这非常简单。它更有可能是访问循环内的数组或异步访问,或者修改计数器 j。您需要发布更具体的代码。

标签: java android arrays exception multidimensional-array


【解决方案1】:

如果您有一个线程读取数组而第二个线程正在改变它们,则此异常并非不可能。具体来说,如果变异线程正在改变数组切片的大小;例如

array[i] = new Whatever[array[i].length - 1];

【讨论】:

  • 这很有意义,我一定在某个地方有同步泄漏。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-29
  • 2023-01-02
相关资源
最近更新 更多