0

背景に画像を保存してから、写真でいっぱいのグリッドビューに転送するときにメモリの問題があります。

私のアプリケーションの仕組み:

アクティビティ 1「たくさんの画像を表示する」 (ここでは簡単な読み込みが有効になっています) アクティビティ 2 「SD カードに画像を保存する」

私が抱えている問題は、アクティビティ 1 に進むにつれて、アクティビティ 2 にあります。アイテムがバックグラウンドで保存され、画像が不足している場合。

私が試したこと:

アクティビティ 1 に転送する前に System.gc() を呼び出そうとしました。

メソッドを作成し、変数を null に変更しようとしました。(ガベージ コレクションを強制します)

私の試みは失敗しました。したがって、誰かが最適化のオプションについてより良いアイデアを提供してくれたら、私は感謝します.

4

1 に答える 1

0

昨日、問題の原因がわかりました。問題は、AsyncTask クラス内に項目を追加し、クラスを完了した後でも次のアクティビティを転送することでした。このコメントに従って、非同期クラス内にコンテキストを含む ProgressDialog を使用しているため、非同期クラスは何らかの方法でその項目を保存します。

「アクティビティへの参照を保持し、アクティビティがガベージコレクションされないようにします...ただし、アクティビティへの参照がない静的内部クラスまたは完全に独立したクラスでない限り、アクティビティまたはアクティビティを指すものはありません」

CommonsWareによるコメント。

于 2012-06-01T14:33:07.153 に答える