私はAnimationDrawable
正常に動作するPNGシーケンスを再生するために使用しています。問題は、この部分を追加した後、アプリケーションが〜7MBのRAMを〜32MBに使用するようになったということです。
メモリを解放するために直接呼び出すことはできないことは知っていますが、そのような後のメモリ使用を最小限に抑える方法はありませんAnimation
。
私はAnimationDrawable
正常に動作するPNGシーケンスを再生するために使用しています。問題は、この部分を追加した後、アプリケーションが〜7MBのRAMを〜32MBに使用するようになったということです。
メモリを解放するために直接呼び出すことはできないことは知っていますが、そのような後のメモリ使用を最小限に抑える方法はありませんAnimation
。
私は解決策を見つけたと思います。バックグラウンドリソースをシーケンスの最後のドローアブルに設定し、AnimationDrawable
をnullに設定してから、ガベージコレクションを呼び出すことで、この問題を修正しました。
animationDrawable = null;
imageView.setBackgroundResource(R.drawable.last_png);
System.gc();
gc()は、必要な場合にのみ実行され、呼び出しは、それを実行する準備ができていることを示します。しかし、本当にメモリが必要な場合、それを呼び出しても効果はありません。gcを呼び出しても、メモリがクリーンアップされ、実行するのに十分な余裕があることは保証されません。
RAMの使用量を低く抑えるために、使用したリソースを削除し、必要に応じてロードする必要があります。
Androidで2回目の実行時にOutOfMemoryErrorを引き起こすアニメーションドローアブル
この質問への答えは、アニメーションドローアブルで使用されているビットマップを解放するための解決策を提案します。.recycle()を呼び出してビットマップを解放します。AnimationDrawableがこれを実行することを期待します。これは、アクティビティを終了するときに実際に実行される可能性がありますが、System.gc()に依存しなくても機能する可能性があります。
これは一般的な問題のようです。上記のリンクがこれまでのベストアンサーです。