2016-04-24 11 views
1

私は、解像度1920×10803メガバイトイメージを持っています。 しかし、このコードをエミュレータデバイス(1GB Ram | 441 PPI密度| 5.5インチ画面)で実行すると、OutOfMemoryErrorが表示されます。 私はRelativeLAyoutの背景にXMLを使ってイメージをロードしています。OutOfMemoryErrorが

ビットマップを効率的に読み込むためにDevloper.androidをチェックしましたが、あまり明確ではありませんでした。 あなたは私を助けてください。

+0

を読み、読むことができますこれは:http://developer.android.com/intl/vi/training/displaying-bitmaps/load-bitmap.html –

+0

ビットマップは、圧縮されていない形式の画像データを必要とするため、少なくとも8MBの大きさになります。ファイルシステム上の3MBは無関係です。 – Henry

+0

もし私が大きなヒープを割り当てようとすると、アプリは大量のメモリを消費し、デバイスのパフォーマンスが低下し、その後クラッシュするので、賢明なアイデアはありません –

答えて

1

これはデバイスとデバイスの間で発生し、同様の問題が発生しました。私のSony Xperia C(1GB RAM)はすべて正常に動作していましたが、Xiomi Redmi(2GB RAM)にはOOMを提供していました。

私はどのようにload Bitmap efficientlyへの厄介な研究のすべての並べ替えを行ってGlideライブラリを使用して終了し、以来、私は自分のプロジェクトでOOMを見たことがない。

の統合は、単に単にプロジェクトでJarを追加し、任意のサイズのロードマップに簡単です: -

ImageView imageView = (ImageView) findViewById(R.id.my_image_view); 

    Glide.with(this).load("url to 3 MB image").into(imageView); 

あなたがここにすべてのグライドについてAndroidManifestのアプリケーションタグの中にlargeHeapを設定https://futurestud.io/blog/glide-getting-started