2017-01-27 10 views
0

私はここで同様の質問をしましたが、問題を解決できませんでした。AsyncTask throwing android.view.WindowLeakedエラー

私はアクティビティを終了した後に進行状況バーを表示していますが、私のコードでどこが間違っているのかわかりません。に進捗バーが表示され、onPostExecuteで終了します。

CODE

private class NetCheck extends AsyncTask <Void, Void, Boolean>{ 

     private ProgressDialog nDialog; 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      nDialog = new ProgressDialog(Login.this); 
      nDialog.setTitle("Checking Network"); 
      nDialog.setMessage("Loading.."); 
      nDialog.setIndeterminate(false); 
      nDialog.setCancelable(true); 
      nDialog.show(); 
     } 

     @Override 
     protected Boolean doInBackground(Void... params) { 
      ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
      NetworkInfo nf = cm.getActiveNetworkInfo(); 
      if(nf != null && nf.isConnected()) { 
       try { 
        URL url = new URL("http://www.google.com"); 
        HttpURLConnection urlc = (HttpURLConnection) url.openConnection(); 
        urlc.setConnectTimeout(5000); 
        urlc.connect(); 
        if(urlc.getResponseCode() == 200) { 
         return true; 
        } 
       } 
       catch(MalformedURLException e1) { 
        e1.printStackTrace(); 
       } 
       catch(IOException e2) { 
        e2.printStackTrace(); 
       } 
      } 
      return false; 
     } 

     @Override 
     protected void onPostExecute(Boolean th) { 
      if(th == true) { 
       nDialog.dismiss(); 
       new ProcessLogin().execute(); 
      } 
      else{ 
       nDialog.dismiss(); 
       errorMSG.setText("Error in Network Connection"); 
      } 
     } 
    } 

エラーログあなたが以下のように使用してフラグメントを使用している場合は、他のアクティビティを使用している場合は、この2つの条件ダイアログのチェックを進行Showin前

E/WindowManager: android.view.WindowLeaked: Activity boxyworldreseller.com.boxyworldreseller.Login has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{322c8153 V.E..... R......D 0,0-1026,483} that was originally added here 
        at android.view.ViewRootImpl.<init>(ViewRootImpl.java:363) 
        at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:271) 
        at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85) 
        at android.app.Dialog.show(Dialog.java:298) 
        at boxyworldreseller.com.boxyworldreseller.Login$NetCheck.onPreExecute(Login.java:92) 
        at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:591) 
        at android.os.AsyncTask.execute(AsyncTask.java:539) 
        at boxyworldreseller.com.boxyworldreseller.Login.NetAsync(Login.java:77) 
        at boxyworldreseller.com.boxyworldreseller.Login$3.onClick(Login.java:68) 
        at android.view.View.performClick(View.java:4780) 
        at android.view.View$PerformClick.run(View.java:19866) 
        at android.os.Handler.handleCallback(Handler.java:739) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.app.ActivityThread.main(ActivityThread.java:5254) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
+0

@セルヴィン私はエノを持っていた私は同じ質問をしますが、どのように活動を残す前にダイアログを表示するのですか?実際、私は活動を全く残していません。 –

答えて

0
protected void onPreExecute() { 
      super.onPreExecute(); 
      if(!isFinishing() && this != null){ 
      nDialog = new ProgressDialog(Login.this); 
      nDialog.setTitle("Checking Network"); 
      nDialog.setMessage("Loading.."); 
      nDialog.setIndeterminate(false); 
      nDialog.setCancelable(true); 
      nDialog.show(); 
} 
     } 

protected void onPreExecute() { 
     super.onPreExecute(); 
     if(!getActivity().isFinishing() && getActivity()!= null) 
      nDialog = new ProgressDialog(Login.this); 
      nDialog.setTitle("Checking Network"); 
      nDialog.setMessage("Loading.."); 
      nDialog.setIndeterminate(false); 
      nDialog.setCancelable(true); 
      nDialog.show(); 
     } 
    } 
+0

私はこの条件を追加しました。変更はありません。同じエラーが発生します。 –