すべてのフレームを個別のビットマップとしてメモリにロードし、スレッドループを使用してそれらをに割り当てることにより、gifをアニメーション化するアプリがありますimageViews
。
はimageViews
フラグメント上にあり、フラグメントはにロードされますpageViewer
。ページビューアのオフスクリーン制限を1に設定したので、一度に処理できるフラグメント/GIFは最大で3つです。
2.1のエミュレータでは、3つのgifがすべて同時にメモリにある場合、このエラーが発生します。
11-25 17:28:34.269: E/dalvikvm-heap(524): 292000-byte external allocation too large for this process.
11-25 17:28:34.269: E/(524): VM won't let us allocate 292000 bytes
2.3.3でも同じエラーが発生しますが、4.0.3エミュレーターまたは4.0.4を実行しているギャラクシータブ10.1では発生しません。これら2つは正常に実行され、かなり高速です。
1024x999 3.2MB gifを読み込もうとしましたが、4.0.3エミュレーターでさえ失敗しましたが、タブレットがgifの読み込みを停止するまで、それでも多数のgifを表示できました。アプリは約250〜300MBのRAMを使用しました。
では、実際のデバイスがどのように機能するかを予測する方法はありますか?より高いAPIバージョンをターゲットにする必要がありますか?