Android 開発、難しいですね。
知ってました?Android の PopupWindow 作るの難しいの。
Problems creating a Popup Window in Android Activity
タイミングが速すぎるんですよ。何このノウハウ?
でね、PopupWindow 破棄するのも、難しいの知ってました?
PopupWindow.dismiss() なんですがね、PopupWindow.isShowing() == true じゃないと、破棄できないんですよ。迅速にUIでポップアップの表示と破棄をボタン連打で繰り返してると、ゴーストウィンドウが溜まりまくるんですよwwww
何が起きてるかっていうと、PopupWindow が表示しきれる前に破棄をUIから指示できるんです。
そうすると
PopupWindow.isShowing() == false 時に破棄関数が呼ばれて、dismiss() できないから、PopupWindow のインスタンスは生きたまま破棄できない状態でスルーですわ。
どうすればいいか?
private void purgePopup( PopupWindow pw ) {
if( pw == null ) return;
if( pw.isShowing() ) {
pw.dismiss();
} else {
final PopupWindow oldWindow = pw;
new Timer().schedule(new TimerTask(){
@Override
public void run() {
getActivity().runOnUiThread(new Runnable(){
public void run() {
oldWindow.dismiss();
}
});
}
}, 100);
}
}
こんな感じで対処したら、うまくいきました。ぼぇー
0 件のコメント:
コメントを投稿