3

GridView に (連絡先からの) 大量の写真を表示するかなり標準的な Android アプリを作成しました。アプリは、画面の向きが変わったときにデータを保持しようとする特別なことは何もせず、Activity が再作成されるときに GridView、アダプター、およびローダーを再作成するだけです。

ただし、向きを数回変更すると、アプリの速度が低下します。さらに数回経過すると、メモリ不足エラーでクラッシュします (BitmapFactory.decodeStream() で)。これは、ガベージ コレクターに処理をさせるためにローテーションの間に 1 分間そのままにしておくと、まだ発生します。

Android は、向きの変更中にアクティビティが破棄されると、アクティビティに関連付けられているすべてのメモリを解放するという印象を受けました。しかし、そうではないようです。私の質問は、Activity が破壊されたにもかかわらず、誤ってどのような記憶を保持している可能性があるかということです。

(アプリケーションは、向きがあまり変更されない限り正常に動作することに注意してください。そのため、私が使用しているメモリ最小化の一般的なアプローチで十分です。)

4

1 に答える 1

1

追加忘れたみたいbitmap.recycle();

また、簡単な方法でこれを修正し、AndroidManifest にアクティビティ パラメータを追加します。 android:configChanges="orientation|screenSize"

于 2013-10-21T07:57:27.223 に答える