5

Androidのメモリをテストするための簡単なアプリを作成しました。AとBの2つのアクティビティがあります。AはBで始まるボタンのある単純なアクティビティです。Bはかなり大きな画像(jpg、mdpiで1024x768ピクセル)で構成されています。

DDMSを使用してこのプロセスを監視すると、AからBに移動するときに期待どおりにヒープが増加します。Bの(ハードウェアまたはソフトウェアを使用するsuper.onBackPressed())ボタンを押して再びAに到達すると、呼び出した後でもヒープが再び縮小することはありません。ガベージコレクション。これは期待されていますか?Bが使用したメモリは、プロセスの存続期間中に解放されますか?

4

2 に答える 2

3

onBackPressed()はBackStackから B アクティビティをポップするだけで、アクティビティは表示されなくなります (onStop() が呼び出されます) が、Os がメモリを必要とするまでプロセスは強制終了されません。

于 2013-01-28T08:35:43.710 に答える
1

ガベージ コレクタは「非決定論的」に動作することに注意してください。特に、ガベージ コレクタを呼び出しても、メモリが完全に解放されるわけではありません。より多くのメモリが要求された場合にのみ、メモリが解放されることが保証されます。

于 2013-01-28T08:37:10.777 に答える