android-ibc-forum

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

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:
src/de/mtbnews/android/util/ServerAsyncTask.java | 26++++++++++++++++++++++----
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; /** *