Aufwändige Berechnung und GUI-Update

T

tar

Neues Mitglied
0
Hallo Leute!

Ich habe ein Problem wofuer ich keine vernuenftige Loesung finde und mir auch nicht so sicher bin, ob denn ueberhaupt eine einfache Loesung dafuer existiert:

In meiner App muss ich an manchen Stellen ziemlich aufwaendigen Code ausfuehren. Jetzt wirft Android natuerlich eine ANR, weil meine GUI nicht reagiert. Also muss ich das ganze eigentlich in einen separaten Thread auslagern, z.B. mit AsyncTask. Wenn ich das so mache, dann bedeutet das allerdings, dass die App schon mit der Programmausfuehrung weiter macht, obwohl ich eigentlich noch auf die Ergebnisse von AsyncTask warte.

Was ich also eigentlich will, ist eine Loesung, bei der ich meinen Code ausfuehre und gleichzeitig noch die GUI, z.b. eine ProgressBar, update und in der Codeausfuehrung erst weitermache, wenn der aufwendige Task abgearbeitet wurde. Der Aufrufe muss also irgendwie blockierend geschehen.

Ich hoffe ich habe klar gemacht, was mein Problem ist. Irgendwelche Vorschlaege?

Tobias
 
Dann starte man ein neues Thread und mache deine Berechnungen dort.
 
Ich moechte aber, dass das blockierend geschieht. Also dass der Code nach der Berechnung erst ausgefuehrt wird, wenn die Berechnung abgeschlossen ist, da ich das Ergebnis der Berechnung brauche. Wenn man das in einen extra Thread auslagert, wird dieser abgearbeitet und die Ausfuehrung im Mainthread wartet nicht auf das Ergebnis des Threads.
 
naja das sind grundlegene architektur geschichten.

starte einen thread ( am besten einen asynctask ) und wenn die berechnung fertig ist, rufst eine callback methode auf, die dann weiter arbeitet.

das blockiert den ui thread nicht und erziehlt dein gewünschtes ergebnis
 
  • Danke
Reaktionen: tar
Danke fuer deine Antwort. Ich hab es jetzt so umgesetzt, bin allerdings mit der Loesung nicht ganz zufrieden, da man ja so fuer jeden Fall einen eigene Ableitung von AsyncTask schreiben muss und auch fuer jeden Fall eine Callback-Methode. Ich hatte gehofft, dass es da vielleicht eine Android-Spezialloesung gibt.

Falls noch jemand eine Idee hat, wuerde ich mich freuen. Aber so funktioniert es zumindest.
 
und wo ist das problem, wenn ich für verschiedene fälle verschiedene klasse baue??

das versteh ich nicht ganz
 

Ähnliche Themen

M
  • MikelKatzengreis
Antworten
5
Aufrufe
126
swa00
swa00
J
  • Juleru
Antworten
8
Aufrufe
497
Juleru
J
Laser5001
Antworten
3
Aufrufe
648
swa00
swa00
Zurück
Oben Unten