マニフェストでAndroid:LargeHeap="true"オプションを使用して、少し余分なメモリを取得したいと思います (高解像度 1980x1200 ディスプレイで 5 MB 以上のビットマップを扱っており、すぐにさらに大きなディスプレイが期待されます。
Android でのビットマップの貧弱なメモリ処理に対処するためのすべての通常のトリックを使い果たしました (つまり、断片化されたメモリに十分な大きさの穴があるかどうかを知る方法は、クラッシュしないことを試して祈る以外にありません)。 )。メモリを最小限に抑えてクラッシュを防ぐために、最適化、トリミング、およびその他のトリックの適用にすでに数週間を費やしてきました。これは、2.x と 3.x/4.x でどの機能を実行できるかというトリックですが、すべてを 1 つのアプリに保持します。「ビットマップを最適化する方法」を指摘する必要はありません-私はすでにこれらを調べて、できることを適用しました。
LargeHeap はバージョン 2.x ではサポートされていません。また、2.x で LargeHeap オプションを必要としない低解像度の画面には別の画像を使用しています。(メモリ不足の問題もありません)。
android:minSdkVersion="8" の場合、Android:LargeHeap オプションはまったく許可されません。
3.x のシステムに条件付きで LargeHeap を含め、2.x では無視する方法はありますか? または、3.x が検出された場合、アプリケーション自体が LargeHeap を設定しようとしますか? これを行う方法が見つかりませんが、おそらくいくつかのトリックを見落としています。
また、LargeHeap がかなりひどいことも認識していますが、他のトリックが不足しています。理想的には、プログラム OnCreate で本当に必要な (そして許可されている) 場合にのみ、LargeHeap をプログラムで実行するとよいでしょう。