Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android应用程序崩溃了,我不知道为什么_Android - Fatal编程技术网

Android应用程序崩溃了,我不知道为什么

Android应用程序崩溃了,我不知道为什么,android,Android,我有一只很奇怪的虫子。它只在模拟器中发生。我在多部安卓手机和Acer平板电脑上进行了测试,效果很好 我的程序有一个循环,可以将位图加载到位图[]位卡中。通过bitCards=new Bitmap[14]为14个元素设置数组 现在它循环12次,将位图放入数组,如下所示: bitCards[i] = BitmapFactory.decodeStream(inputStream); 当i=8时,该语句崩溃 如果我用 bitCards[0] = BitmapFactory.decodeStream(i

我有一只很奇怪的虫子。它只在模拟器中发生。我在多部安卓手机和Acer平板电脑上进行了测试,效果很好

我的程序有一个循环,可以将位图加载到
位图[]位卡中。通过
bitCards=new Bitmap[14]
为14个元素设置数组

现在它循环12次,将位图放入数组,如下所示:

bitCards[i] = BitmapFactory.decodeStream(inputStream);
当i=8时,该语句崩溃

如果我用

bitCards[0] = BitmapFactory.decodeStream(inputStream);
它没有崩溃,我想可能是阵列不够大,所以我做了以下操作

bitCards[8]=BitmapFactory.decodeStream(inputStream); // Still did not crash.
唯一有意义的是当我

bitCards[i] = BitmapFactory.decodeStream(inputStream);
它是放松旧的记忆并放入一个新的对象,因此只为一个对象创建了内存,但是。。。。异常不会消失,我不应该得到某种错误吗

这是我的全部代码:

void Shuffle()
{
    Random generator;
    generator = new Random();
    int[] iCardsUsed;
    iCardsUsed = new int[55];
    for(int i=0;i<55;i++)
    iCardsUsed[i]=0;

    try {   

        bitCards = new Bitmap[14];
        iCards = new int[14];
        iTurnOver = new int[14];

        for (int i = 0; i < 12; i++)
        {
            iTurnOver[i]=0;

            int cardId;

            do {
                cardId = generator.nextInt(50);
            } while( iCardsUsed[cardId] ==1);

            iCardsUsed[cardId] =1;
            iCards[i]=cardId;

            iCards[i]=i;    
            String fName=new String("card");
            fName+=Integer.toString(iCards[i]+1);
            fName+=".jpg";

            AssetManager assetManager= ctx.getAssets();
            InputStream inputStream;
            inputStream = assetManager.open(fName);

            // this is where it crashes
            bitCards[i]=BitmapFactory.decodeStream(inputStream);

            inputStream.close();    
        }

    } catch( IOException e)
    {
        gi++;
    }
    // update screen
    invalidate();
}
void Shuffle()
{
随机发生器;
生成器=新随机数();
int[]i已使用;
iCardsUsed=新整数[55];

对于(int i=0;i,因为您没有提供错误消息,所以我在黑暗中拍摄,并假设它正在运行

您说它在运行几次后停止(当i=8时),我相信您没有释放资源。位图有时可能会占用大量空间,如果您将它们持久保存在内存中,如果设备内存不足,我也不会感到惊讶。不同的设备具有不同的内存规格,运行几次后,它会填满内存

因此,我的建议是使用
mBitmap.recycle()


另外,请查看!

您能提供错误消息吗?请提供logcat信息。