0

私のアプリでは、次のgithubリンクで説明されているように、100枚の画像を使用してページカール効果を表示しようとしています -こちら

サンプル コードでは 2 つの画像のみを使用していますが、私のアプリでは約 90 の画像を使用しています。これにより、アプリがクラッシュし、logcat で次の問題が発生します。

E/dalvikvm-heap(603): Out of memory on a 5529616-byte allocation.

7枚の画像で試したところ、うまくいきました。7以上に増やそうとするとクラッシュします。私の画像はすべて描画可能なフォルダーにあります。

そのgithubコードでは、ドローアブルからの画像は次のように取得されます

mPages.add(BitmapFactory.decodeResource(getResources(),R.drawable.page9));
        mPages.add(BitmapFactory.decodeResource(getResources(),R.drawable.page10));
        mPages.add(BitmapFactory.decodeResource(getResources(),R.drawable.page11));
        mPages.add(BitmapFactory.decodeResource(getResources(),R.drawable.page12));
        mPages.add(BitmapFactory.decodeResource(getResources(),R.drawable.page13));
        mPages.add(BitmapFactory.decodeResource(getResources(),R.drawable.page14));
        mPages.add(BitmapFactory.decodeResource(getResources(),R.drawable.page15));

この問題を解決してすべての画像を読み込む方法、より良い提案...

4

2 に答える 2

0

遅延読み込みメカニズムを使用します。すべてのビットマップを一度にメモリにロードせず、ID を に保持し、ArrayList必要に応じてロードし、使用後にビットマップをアンロードして、メモリを解放できるようにします。

于 2012-11-11T21:00:52.473 に答える
0

Android ではアプリケーションごとのヒープが非常に限られているため、デスクトップ PC ほど多くのメモリを使用できないことを認識する必要があります。したがって、使用したいソリューションは次のとおりです。

  1. 小さいサイズの画像を使用してください。
  2. アプリケーションの動作を最適化します。つまりBitmaps、現在使用されていないものはロードせず、不要になったらすぐに適切にリサイクルする必要があります。
  3. Bitmapsすでに機能しているの数を制限します。

アプリケーションの動作を改善するために、これらのいずれかを実装していただければ幸いです。

于 2012-11-11T19:02:53.043 に答える