0

Android アプリで、アクティビティの 1 つを 2 回目に実行すると、OutOfMemoryError. アクティビティの初回実行時からビットマップを削除する必要があると思います。しかし、どうすればこれができるのかわかりません。ありがとうございました。

4

3 に答える 3

2

コード内からビットマップを読んでみてください。ビットマップをres/drawable-hdpiフォルダーに配置します。(画質ごとに異なるフォルダがあります)。コードでビットマップフィールドを設定します。

Bitmap alpha;
Bitmap foo;

次に、onResume()でビットマップを初期化します。

Options options = new Options();
alpha = BitmapFactory.decodeResource(game.getResources(), R.drawable.youBitmapName, options);
foo = BitmapFactory.decodeResource(game.getResources(), R.drawable.youBitmapName2, options);

オプションを使用すると、ダウンサンプリングすることができます。(画像の大きさはわかりませんが、スケーリング方法を使用することもできます)。

onPauseで、次のコマンドを呼び出してリソースをクリーンアップします。

alpha.recycle();
alpha = null;
foo.recycle();
foo = null;

onResume()メソッドが呼び出されるとすぐに、ビットマップが再初期化されます。

于 2012-07-13T13:39:43.763 に答える
0

ビットマップを無効にして、ガベージ コレクターを呼び出します。System.gc();および/またはRuntime.getRuntime().gc();

また、より良い回答を得るために、コードに関する詳細を提供してください。

于 2012-07-13T13:40:25.690 に答える
0

通常、ガベージ コレクターはBitmap.recycle()、そのインスタンスを指す参照がなくなるとすぐに呼び出します。

ビットマップを強制的にクリーンアップしたい場合はrecycle()、自分で呼び出してください。

しかし、最初にメモリリークを探すことをお勧めします。

于 2012-07-13T13:40:54.323 に答える