Android ProgressDialog

T

Trancegott

Neues Mitglied
0
Hallo,
ich bin völlig neu in der Android Programmierung und bitte deswegen um verständniss.
Kann mir jemand erklären, oder vielleicht einen link posten wo es gut erklärt wird, warum ein ProgressDialog unter Umständen nicht sofort angezeigt wird? ich habe schon andere Posts gelesen, aber ehrlichgesagt verstehe ich von UI-Thread und Async Task herzlich wenig :(

Wäre nett, wenn mir jemand helfen kann.
 
Zuletzt bearbeitet:
Kennst du dich mit Multithreading und Java allgemein aus?
 
Multithreading kenne ich nicht....

Falls es jemandem etwas bringt:
Code:
	public void onBackPressed() 
	{
		ProgressDialog dialog = ProgressDialog.show(AppActivity.this, "", "This could take a while...", true);
		dialog.show();
		write();
		dialog.dismiss();
	   return;
	}
 
Trancegott schrieb:
Multithreading kenne ich nicht....

Falls es jemandem etwas bringt:
Code:
	public void onBackPressed() 
	{
		ProgressDialog dialog = ProgressDialog.show(AppActivity.this, "", "This could take a while...", true);
		dialog.show();
		write();
		dialog.dismiss();
	   return;
	}

den code sollte aber keiner übernehmen. wenn deine write methode länger braucht, wirds nen schönen anr geben.
 
Und wenn der write schnell ist, ist der Dialog weg, bevor man ihn wahrgenommen hat.
 
okay, jetzt weiß ich grob was threads sind...

Undi ich hab jetz auch verstanden was bei mir immer falsch lief und jetzt funktionierts :)

Code:
@Override
	public void onBackPressed() 
	{
		ProgressDialog dialog = ProgressDialog.show(BitchAppActivity.this, "Uploading...", "This could take a while", true);
		ArbeitsThread ladeThread = new ArbeitsThread(this, dialog);
		ladeThread.start();
	    return;
	}
	public class ArbeitsThread extends Thread
	{
		private ProgressDialog meinFortschritt;
		
		public ArbeitsThread(Activity activity, ProgressDialog fortschritt)
		{
			super();
			meinFortschritt = fortschritt;
		}

		@Override
		public void run() 
		{
			write();
			meinFortschritt.dismiss();
			finish();
		}
	}
 
@DieGoldeneMitte
Ist der Code so, wie ich ihn jetzt gepostet habe anr-resistent?^^
 
Der Code ist zwar ANR sicher, aber du machst ein GUI update von außerhalb des Haupt-Threads. (Das ist unter Android nicht richtig)

Unter Android nimmt man statt eines Threads einen AsyncTask (Tutorial hier: Android Threads, Handlers and AsyncTask - Tutorial). Der UI Update, sprich der dialog.dismiss() kommt dann in die onPostExecute(). So kannst du dann nebenbei auch sicher sein, dass bei einer Exception im write der Dialog auch verschwindet etc...
 
  • Danke
Reaktionen: Trancegott
ah okay, danke!
Dann würde ich jetzt nur noch gerne wissen, wie ich den fehler abfragen kann, dass keine Verbindung hergestellt werden konnte oder ein Timeout erfolg...
 
Das kann man zB, indem man diesen Fehler im doInBackground abfängt, auswertet und entsprechende Werte an onPostExecute (ob per Parameter oder Instanzvariable bleibt dir überlassen) übergibt, in denen man dann die passende Meldung raushaut.
 

Ähnliche Themen

M
Antworten
4
Aufrufe
1.173
swa00
swa00
5
Antworten
0
Aufrufe
1.146
586920
5
B
Antworten
4
Aufrufe
489
bb321
B
Zurück
Oben Unten