2016-04-21 10 views
-1

Ich bin neu in der Android-Entwicklung, und ich habe in dieses Problem geraten, dass ich keine Lösung für gefunden habe.Android Studio Asynctask Alternative

Es beginnt zunächst mit einem Webservice API für die Anmeldung. Von dort, wenn die Anmeldung erfolgreich ist, führt sie 2 Funktionen für die tatsächlich benötigten Daten aus, speichert sie in sqlite und geht dann zur nächsten Aktivität über. Alle 3 API-Anfragen verwenden AsyncTask und von dem, was ich verstehe, läuft meine Aktivität tatsächlich schneller als mein Hintergrund-Thread "doInBackground". Ich möchte den Weg wissen oder was ich untersuchen sollte. Ich habe Beiträge über die Verwendung von Schlaf gelesen und Beiträge darüber gelesen, wie das schlecht ist. Ich möchte die JSON-Daten erhalten, die ich brauche, speichern und sofort verwenden. Ich denke, dass ich weg finde, um direkt zu verbinden und einen Fortschrittsbalken zu verwenden, um die Daten zu erhalten. Denken Sie daran, es sind nicht viele Daten, aber es reicht aus, um meine Anwendung zu blockieren.

+0

Ich glaube, ich habe vielleicht einen Vorsprung mit Android Volley Jsonrequest –

Antwort

0

Nicht sicher, was eine ProgressBar mit dem Abrufen von Daten von einem Server zu tun hat, aber wenn Sie nach AsyncTask-Alternativen suchen (insbesondere für HTTP-Aufrufe), können Sie diese Frameworks ansehen (wahrscheinlich möchten Sie nur einen auswählen) :

  1. Square's Retrofit
  2. Google's Volley

Entweder wird Ihr Leben viel einfacher machen, wenn es um HTTP-Anforderungen kommt. Ihre eigene Dokumentation erklärt, wie man sie gut benutzt, also werde ich hier nicht darauf eingehen.

Wenn Sie nach einer nativen, niedrigeren AsyncTask Alternative suchen, werfen Sie einen Blick auf AsyncTaskLoaders. Die tut im Wesentlichen genau das gleiche wie eine AsyncTask, aber sie leben innerhalb des Lebenszyklus der Aktivität oder Fragment, so dass Ihr Code tendenziell weniger fehleranfällig ist.

+0

Vielen Dank für die Hilfe! Ich habe herausgefunden, wie man Googles Volley benutzt und ich mag es viel mehr als asyncTask. Ich habe immer noch das gleiche Problem mit dem Timing. Nach der Anmeldung mache ich 2 API-Anfragen für Daten, dann speichert sie sie in der SQLite-Datenbank und dann zu einer DashboardActivity. Das Problem ist, dass die Daten zum Zeitpunkt des Dashboards nicht in der Datenbank gespeichert sind (ich denke, es zeigt sich vielleicht ein paar Sekunden zu spät). Irgendwelche Gedanken/Vorschläge? –