あるアクティビティから別のアクティビティに移行するときのビットマップ メモリ管理に苦労しています。私が見つけた 2 つの最大の助けは、(1) 配列内のフラグメントまたはアクティビティ内のすべてのビットマップを追跡し、onPause() で配列を null にすることと、(2) 移行時に現在のアクティビティで finish() を呼び出すことです。別のアクティビティに。
しかし、finish() を使用すると、以前の状態情報がすべて失われます。
私のビットマップをヌルにすることはできない私のビットマップメモリ管理のためにfinish()が何をしているのか誰かが知っていますか?
メモリをクリアするために finish() が行っていることは何でも手動で行いたいと思います。ビットマップを無効にするために使用する「clearBitmap」コードは次のとおりです。
public void onPause() {
super.onPause();
clearBitmaps();
System.gc();
}
public void clearBitmaps() {
if (bitmapArray!=null) {
for (int i=0; i<bitmapArray.length; i++) {
if (bitmapArray[i]!=null) {
bitmapArray[i].recycle();
bitmapArray[i] = null;
}
}
bitmapArray = null;
}
}
finish() の代わりに clearBitmap() メソッドを呼び出してみましたが、うまくいきませんでした。
ところで、私はビットマップを効率的にロードし、Android がビットマップ管理のために行うように指示する他のすべてのトリックを実行していますが、まだこの問題があります。私は多くのビットマップを使用していないため、この問題は困惑しています。しかし、アクティビティ間を約 40 回行ったり来たりすると、常にクラッシュします (以前は 6 回だったので、上記の方法で大幅に進歩しました)。
ありがとう!