こんにちは、チャットアプリを作っています。そのアプリケーションでは、多くのビットマップを使用しています。このアプリケーションは、約 55 MB のメモリ領域を必要とします。アプリケーションを最適化してメモリ内のスペースを少なくする方法を教えてください。一部の友人は、ビットマップのバインドを解除することを提案していますが、私にはそれについてわかりません。誰でも私を助けることができます。前もって感謝します。
2 に答える
「ビットマップを効率的に表示する」トレーニング クラスを見たことがありますか? http://developer.android.com/training/displaying-bitmaps/
手動でバインドを解除しても、どこかでメモリ リークが発生しない限り、メモリの使用量はあまり役に立ちません。あなたが見たいかもしれない呼び出しはBitmap.recycle()です。
そのアプリケーションでは、多くのビットマップを使用します
同時に多くのビットマップを使用しますか?
ビットマップ オブジェクトが実際には不要になったときに、それらへの参照を保持していますか? はいの場合 - そうしないでください。
ビットマップを実際に表示するために必要な高さと幅にデコードしますか? (それらを表示する実際のimageViewサイズ)そうでない場合-そうする必要があります!
Bitmap.recycle()
私の提案を受け入れても、ネイティブ メモリを大量に消費する場合は、不要になったビットマップ オブジェクトのメソッドを呼び出して、呼び出したとおりに「バインド解除」を実行できます。このメソッドは、ビットマップに関連付けられたネイティブ メモリにあるピクセル配列を解放します。
誰もビットマップ参照を保持していない場合、システムはこのメモリを自動的に解放しますが、recycle()
メソッドを呼び出すと、システムはメモリを解放します。これは、短時間に大量のビットマップを使用している場合に役立ちます。通常、システムはその時間内にメモリの解放をトリガーしませんでした。