2011-01-20 32 views
0

一部のAndroidデバイスでアプリケーションが正しく動作していますが、一部のデバイスではメモリ不足エラーが発生しています。ここで奇妙な「メモリ不足」エラー

はLogCatログです:

http://logcat.miui-dev.com/147001

何この活動はありませんが、負荷ビットマップで、onDraw()を通じて、これらのビットマップを表示します。

このエラーの原因を教えてください。

何をやっていますか?

だけ方法イメージ

_bitmapCache.put(R.drawable.gb2、BitmapFactory.decodeResource( getResources()、R.drawable.gb2))内のすべての画像をmaping

アム。

ときコンストラクタが画像を使用している間、私はちょうど

canvas.drawBitmap(_bitmapCache.get(R.drawable.level1c1)、0、0、null)を使用し、そのメソッドを呼び出すと呼ばれています。

あなたは18メガの画像を要求しているように見え画像

+0

あなたはこれを検索しましたか? http://stackoverflow.com/search?q=Strange+%E2%80%9COut+of+Memory%E2%80%9D+Error+android –

+0

はい、問題は解決しませんでした。 – nicky

答えて

1

をクローします。画像を縮小する必要があります。各アプリは、16-24メガのヒープスペースしか許されません。さらなる提案をするためにコードをもっと見る必要がありますが、18メガのイメージは実際には大きすぎます。イメージビューはイメージを自動的にスケーリングするための最良の仕事をしませんので、表示する前にスケーリングを行う必要があります私の経験では。

+0

は自分自身のコードを質問に投稿しました。 – nicky

+0

すべてのビットマップをドロワブルにロードして、コード内のハッシュマップに格納していますか? –

1

BitmapFactoryのオプションで、inSampleSizeのビットマップの縮小版を直接ロードできるように指定する必要があります。

+0

それを試してみましたが、うまくいきませんでした – nicky

+0

です。しかし、大きな画像を扱うことは簡単な問題ではありません。私のアプリEmailAlbumでは、このhttp://code.google.com/p/emailalbum/source/browse/EmailAlbumAndroid/tags/REL-2_10_2/src/com/kg/emailalbum/mobile/util/BitmapLoaderを実装する必要がありました。 javaを使用して縮小されたバージョンで画像をロードし、キャッシュします。 –