垂直 LinearLayout に一連のビューがあります。各ビューは、スクロールするとビットマップを生成して描画します。パフォーマンス上の理由から、onDraw() が呼び出されるたびにビットマップを生成したくありませんが、メモリ上の理由から、ビットマップへのハード参照を保持できません。取るべき戦略についてアドバイスを得ることができました。
私はすでに、ビットマップを生成し、それを SoftReference でラップするという明白なルートを試しました。これは 2 つの理由で失敗しました。1. 参考文献は、私が予想するよりもはるかに熱心に収集されます。2. まだ OOM が表示されます。Bitmap は特に大きくないため、これは衝撃的です。そのため、単一のビューで OOM が発生することはありません。問題のある SoftReference が解放される機会が与えられていないために OOM が発生すると思います。また、アプリケーションに 6 MB のヒープ サイズが割り当てられている場合 (DDMS ビューによると)、OOM が発生します。OOM をスローする前に、ヒープ サイズが 16 MB に拡大すると予想されます。
何かアドバイス?