commit d5850a76535f73e92a3b38f51a2f5208c3f08282
parent 07176d79cb0d5d43ce17c1e1cb5d103f1d7e8490
Author: Jan Dankert <devnull@localhost>
Date: Tue, 7 Feb 2012 01:10:29 +0100
Fix: ProgressDialog in jedem Fall schließen, um \"has leaked Window\" zu vermeiden.
Diffstat:
1 file changed, 22 insertions(+), 4 deletions(-)
diff --git a/src/de/mtbnews/android/util/ServerAsyncTask.java b/src/de/mtbnews/android/util/ServerAsyncTask.java
@@ -17,7 +17,7 @@ import android.content.DialogInterface;
import android.os.AsyncTask;
import android.util.Log;
-/**
+/**
* Ein asynchroner Task für den Zugriff auf den OpenRat-CMS-Server. Der Aufruf
* des Servers muss in der zu überschreibenden Methode {@link #callServer()}
* durchgeführt werden.<br>
@@ -150,18 +150,36 @@ public abstract class ServerAsyncTask extends AsyncTask<Void, Void, Void>
}
catch (IOException e)
{
- Log.e(this.getClass().getName(), e.getMessage(), e);
+ Log.w(this.getClass().getName(), e.getMessage(), e);
error = e;
}
catch (TapatalkException e)
{
- Log.e(this.getClass().getName(), e.getMessage(), e);
+ Log.w(this.getClass().getName(), e.getMessage(), e);
error = e;
}
+ catch (RuntimeException e)
+ {
+ // Hier den Dialogo schließen, da es sonst zu
+ // "has leaked window"-Fehlern kommt.
+ progressDialog.dismiss();
+
+ Log.w(this.getClass().getName(), e.getMessage(), e);
+ throw e; // Und weiterwerfen, da den Fehler hier niemand behandeln
+ // kann. Android schließt somit die Activity.
+ }
return null;
}
+ @Override
+ protected void onCancelled()
+ {
+ // Hier den Dialogo schließen, da es sonst zu
+ // "has leaked window"-Fehlern kommt.
+ progressDialog.dismiss();
+ }
+
/**
* Ausführen der Serveranfrage. Auftretene {@link IOException} sollte
* weitergeworfen werden, da daraus ein {@link AlertDialog} erzeugt wird.
@@ -169,7 +187,7 @@ public abstract class ServerAsyncTask extends AsyncTask<Void, Void, Void>
* @throws IOException
* Vom Server erzeugte Fehler
*/
- protected abstract void callServer() throws IOException,TapatalkException;
+ protected abstract void callServer() throws IOException, TapatalkException;
/**
*