1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Aufwändige Berechnung und GUI-Update

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von tar, 20.05.2011.

  1. tar, 20.05.2011 #1
    tar

    tar Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    08.03.2011
    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
     
  2. ko5tik, 20.05.2011 #2
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Dann starte man ein neues Thread und mache deine Berechnungen dort.
     
  3. tar, 20.05.2011 #3
    tar

    tar Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    08.03.2011
    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.
     
  4. swordi, 20.05.2011 #4
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    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
     
    tar bedankt sich.
  5. tar, 20.05.2011 #5
    tar

    tar Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    08.03.2011
    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.
     
  6. swordi, 20.05.2011 #6
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    und wo ist das problem, wenn ich für verschiedene fälle verschiedene klasse baue??

    das versteh ich nicht ganz
     

Diese Seite empfehlen