0

いくつかの画像をエミュレーターにロードする Android アプリケーションを開発していますが、以下のエラーで失敗します。

11-07 19:38:51.596: E/dalvikvm-heap(322): 73670400-byte external
allocation too large for this process.

11-07 19:38:51.596: E/GraphicsJNI(322): VM won't let us allocate
73670400 bytes

11-07 19:38:51.596: D/AndroidRuntime(322): Shutting down VM

11-07 19:38:51.616: W/dalvikvm(322): threadid=1: thread exiting with
uncaught exception (group=0x4001d800)

11-07 19:38:51.926: E/AndroidRuntime(322): FATAL EXCEPTION: main

11-07 19:38:51.926: E/AndroidRuntime(322): java.lang.OutOfMemoryError:
bitmap size exceeds VM budget

11-07 19:38:51.926: E/AndroidRuntime(322):  at
android.graphics.Bitmap.nativeCreate(Native Method)

11-07 19:38:51.926: E/AndroidRuntime(322):  at
android.graphics.Bitmap.createBitmap(Bitmap.java:468)

11-07 19:38:51.926: E/AndroidRuntime(322):  at
android.graphics.Bitmap.createBitmap(Bitmap.java:435)

エラーが発生している私のJavaコードは以下のとおりです。私System.out.printlnは問題をデバッグしていました。

public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub

    System.out.println("11");
    ImageView imageView = new ImageView(context);
    System.out.println("12");


    imageView.setImageResource(imageIDs[position]);
    System.out.println("13");
    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
    System.out.println("14");
    imageView.setLayoutParams(new Gallery.LayoutParams(150, 220));
    System.out.println("15");
    imageView.setBackgroundResource(itemBackGround);

    System.out.println("16");

    return imageView;
}

お役に立てれば幸いです。ありがとう。

4

2 に答える 2

1

期待をキャッチして、ガベージ コレクションを呼び出した後に再試行してみてください

public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        System.out.println("11");
        ImageView imageView = new ImageView(context);
        System.out.println("12");
        try {

            imageView.setImageResource(imageIDs[position]);
            System.out.println("13");
            imageView.setScaleType(ImageView.ScaleType.FIT_XY);
            System.out.println("14");
            imageView.setLayoutParams(new Gallery.LayoutParams(150, 220));
            System.out.println("15");
            imageView.setBackgroundResource(itemBackGround);


    } catch (OutOfMemoryError e) {
            // run your image cache clean up here if you have one
            // call sys gc
    System.gc();        

            imageView.setImageResource(imageIDs[position]);
            System.out.println("13");
            imageView.setScaleType(ImageView.ScaleType.FIT_XY);
            System.out.println("14");
            imageView.setLayoutParams(new Gallery.LayoutParams(150, 220));
            System.out.println("15");
            imageView.setBackgroundResource(itemBackGround);
    }

        System.out.println("16");

        return imageView;
}
于 2012-11-07T20:05:14.127 に答える
0

どうやら画像ファイルは70メガバイトです、それはあなたの問題でしょう。これは、Androidアプリケーションの許容ヒープサイズよりもはるかに大きくなります。

于 2012-11-07T21:47:21.940 に答える