[ACCEPTED]-android activity has leaked window com.android.internal.policy.impl.phonewindow$decorview Issue-android-alertdialog

Accepted answer
Score: 77

Thank you Guys to give me many suggestions. Finally I got a solution. That is i have 12 started the NetErrorPage intent two times. One 11 time, i have checked the net connection 10 availability and started the intent in page 9 started event. second time, if the page 8 has error, then i have started the intent 7 in OnReceivedError event. So the first time 6 dialog is not closed, before that the second 5 dialog is called. So that i got a error.

Reason for the Error: I 4 have called the showInfoMessageDialog method two 3 times before closing the first one.

Now I 2 have removed the second call and Cleared 1 error :-).

Score: 60

Change this dialog.cancel(); to dialog.dismiss();

The solution is to call 8 dismiss() on the Dialog you created in NetErrorPage.java:114 before exiting 7 the Activity, e.g. in onPause().

Views have a reference to 6 their parent Context (taken from constructor argument). If 5 you leave an Activity without destroying Dialogs and other 4 dynamically created Views, they still hold this 3 reference to your Activity (if you created with 2 this as Context: like new ProgressDialog(this)), so it cannot be collected 1 by the GC, causing a memory leak.

Score: 6

In my case finish() executed immediately after a 1 dialog has shown.

Score: 5

Please try this Way And Let me know :

Context mContext;
public void onCreate(Bundle savedInstanceState) {

   Button reload=(Button)findViewById(R.id.btnReload);
   showInfoMessageDialog("Please check your network connection","Network Alert"); 
public void showInfoMessageDialog(String message,String title)
   new AlertDialog.Builder(mContext)
   .setTitle("Network Alert");
   .setButton("OK",new DialogInterface.OnClickListener() {
       public void onClick(DialogInterface dialog,int which) 


Score: 3

The dialog needs to be started only after 5 the window states of the Activity are initialized This 4 happens only after onresume.

So call

runOnUIthread(new Runnable(){

    showInfoMessageDialog("Please check your network connection","Network Alert");

in your 3 OnResume function. Do not create dialogs 2 in OnCreate

use this

Handler h = new Handler();

h.postDelayed(new Runnable(){

        showInfoMessageDialog("Please check your network connection","Network Alert");

in your Onresume instead 1 of showonuithread

Score: 1
    protected void onPostExecute(final Boolean success) {
        mProgressDialog = null;

setting the value null works for me


Score: 0

I got this error but it is resolved interesting. As 7 first, i got this error at api level 17. When 6 i call a thread (AsyncTask or others) without 5 progress dialog then i call an other thread 4 method again using progress dialog, i got 3 that crash and the reason is about usage 2 of progress dialog.

In my case, there are 1 two results that;

  • I took show(); method of progress dialog before first thread starts then i took dismiss(); method of progress dialog before last thread ends.

So :

ProgresDialog progressDialog = new ...

//configure progressDialog 


start firstThread {


start lastThread {

//be sure to finish threads

  • This is so strange but that error has an ability about destroy itself at least for me :)
Score: 0

The way I got around this issue is by not 3 calling intent within a dialog. **** use 2 syntax applicable to activity or fragment 1 accordingly

public void onClick(DialogInterface dialog, int which) {
    checkvariable= true;

public void onStop() {
    if (checkvariable) {

More Related questions