Well, today I kept battling a memory leak in my opening screen for Perspective when rotating the phone. A quick search yielded plenty of references to orientation changes when rotating. There were quite a few work arounds, but I found a simple one that really made it simple for me so I figured I'd share.
To fix the problem in my PopDialog class that extends a Dialog, I added a
static PopDialog pd=null;
Then I added this just after the onCreate
pd=PopDialog.this;
MainActivity.opened=true;
and finally I added this method
public void dismissing(){
if(pd.isShowing()){pd.dismiss();}
}
OK, that's the hard part. Now in my main activity, I referenced it like this
PopDialog popdialog;
private static boolean opened=false;
after onCreate in that activity
popdialog=new PopDialog(this);
and finally in the onPause
@Override
protected void onPause() {
super.onPause();
if(opened){ popdialog.dismissing();}
}
I forgot, add this to the button you call the Dialog from because sometimes it doesn't call onCreate.
opened=true;
This way when rotating, it always has the proper reference to the active dialog and calls to dismiss it destroying it. I had to update it a bit by adding the opened in there. This is won't let it call dismiss before the dialog is created.
No comments:
Post a Comment