Moin,
irgendwie treiben mich Androids Activities nach wie vor in den Wahnsinn.
Deshalb frage ich hier mal nach.
Ich möchte gern Dinge aus dem Internet herunterladen, was an und für sich kein Problem ist.
Aktuell wird das über den Splash Screen geregelt und ein aufpoppender AlertDialog teilt auch unmissverständlich mit, dass gerade gewartet werden muss.
Ungeilerweise können ja beim Download durchaus Probleme auftreten, aktuell: der Server antwortet nicht. In diesen Fällen dauert eine Reaktion ewig, weshalb eine blockierende Activity, wie ich sie jetzt habe, nicht in Frage kommt.
(3x eine Datei von je einem Server laden = 3*3 Minuten Timeout)
Nun würde ich das Ganze gern auslagern. Meinetwegen in ein Objekt packen und dann an einen Thread übergeben. Nur müsste dieser Thread mitten drin mal ein paar UI Elemente (Dialogfelder) anzeigen. Was er ja nun mal designbedingt nicht kann.
Erschwerend hinzu kommt, dass ich nicht abschätzen kann, auf welcher Activity sich meine App gerade befindet.
Die Methoden für AsyncTask einbauen wird also mutmaßlich auch nicht allzu viel helfen, da die Activities ja lustig wechseln können.
Am Liebsten wäre mir, ich könnte dem Objekt sagen: "Wenn du damit fertig bist, dann starte Activity XYZ auf dem UI Thread und gib ihr die Extras ABC mit."
Nur: wie geht das?
--
Ach ja, ich frage absichtlich nicht nach Möglichkeiten, wie ich die Erreichbarkeit des Servers testen kann.
Wenn ich keine Daten habe, dann habe ich keine Daten und es interessiert mich nicht, warum ich keine Daten habe.
Frage ich beispielsweise ab, ob der Server auf einen Ping reagiert, aber bei HTTP kommt kein Response, bin ich genauso weit wie jetzt - nur mit noch mehr Code. Da ich nicht alles berücksichtigen kann (Ping und HTTP geht, aber ich bekomme ne 503 als HTML Seite ausgeliefert...) und dementsprechend auch nicht will möchte ich lieber abstrakt und minimalisiert da ran gehen: entweder ich bekomme gültige Daten oder nicht.
Wie dabei das 'oder nicht' aussieht interessiert mich erst einmal nicht.