2012-04-23 8 views
0

dismissを使用してポップアップウィンドウを削除すると、そのウィンドウが非表示になったり、メモリから削除されたりするだけですか?PopupWindow dismiss

dismiss、次にshowAtLocationを試してみました(同じPopupWindwオブジェクトを使用して、再作成しません)。問題なくウィンドウが表示され、隠されました。疑問は私はそれに数えることができます - おそらくそれはGCによって削除のためにマークされていますが、まだガベージコレクションされていませんか?

ありがとうございました。

答えて

1

dismiss()showAtLocation()と反対の場合、オブジェクトはdismiss()の後に有効な状態のままです。だから、dismiss()/showAtLocation()

をトグルしても安全であることは、ここでのAndroidのソースコードから見ることができます - あなたはdismiss()showAtLocation()実装

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/widget/PopupWindow.java#PopupWindow.showAtLocation%28android.view.View%2Cint%2Cint%2Cint%29

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/widget/PopupWindow.java#PopupWindow.dismiss%28%29

0

あなたは、オブジェクトが限り、あなたはそれへの参照を持っているとして削除対象としてマークされることはありません

System.gc()

+0

に感謝を見ることができます。しかし、それが収集されるときだけ、それが収集されるときだけ、それは私にとって重要ではない。そうであれば、私はそれを表示する必要があるたびに新しいポップアップウィンドウを作成する必要があります。 –

+0

これはもちろん収集されます。スマートフォンには大きなメモリがないと思うので、割り当てられたアイテムが少ないほど、アプリは円滑になります。 – Manitoba

+0

あなたのクラスの実行終了時にGCが発生します。あなたが再び使用しないようにする場合は、自動的に収集されます。 – Manitoba

1

を使用してガベージコレクタの使用を強制することができます。だから後で再表示することができます。