Ich habe eine Anwendung, die AsyncTasks verwendet, um Aufrufe an einen REST-Server zu tätigen.
Stellen Sie sich vor, dass der Benutzer während einer Ladephase (d.h. die AsyncTask geht zum REST-Server und holt Daten für den nächsten Bildschirm) auf Home drückt.
Was wird empfohlen:
- Abbrechen der aktuellen AsyncTask(s) und Neustart bei Wiederaufnahme der Aktivität
oder
- Setzen Sie die AsyncTasks fort, vermeiden Sie aber die startActivity, indem Sie prüfen, ob sich die Anwendung im Hintergrund befindet (um zu vermeiden, dass die neue Aktivität in den Vordergrund tritt, nachdem die Anwendung in den Hintergrund geschickt wurde). Und onResume Senden an die nächste Aktivität
Worst-Case-Szenarien, die Sie vorhersehen sollten:
- Die Anwendung geht in den Hintergrund und wird wegen Speichermangels beendet
- Die Asynctask schlägt aufgrund einer Zeitüberschreitung oder eines anderen REST-Fehlers fehl
Nach beidem geht der Nutzer zurück zur App...
0 Stimmen
Hängt von Ihren Anforderungen ab.<br>Wenn Sie fragen wollen, wie man eine der beiden Möglichkeiten, die Sie erwähnt haben, dann ist es ein anderer Fall.<br>Bitte sagen Sie, ob es das ist, was Sie brauchen.
0 Stimmen
Nein, ich weiß, wie man es umsetzt. Ich möchte wissen, ob eines der beiden Systeme empfehlenswerter ist und warum. Was sind die Probleme und Vorteile der einzelnen.
0 Stimmen
Wie ich schon sagte, hängt das von Ihren Anforderungen ab. 1. Stellt sicher, dass keine Aktion ausgeführt wird, nachdem die Aktivität angehalten wurde, und sorgt dafür, dass einige häufige Ausnahmen, die in solchen Fällen auftreten, abgefangen werden. 2. Erfordert etwas mehr Aufwand im Code und bei der Pflege der Statusvariablen und ist in Bezug auf die Erfahrung anspruchsvoller. Aber es gibt das Problem, dass Ausnahmen und/oder Unstimmigkeiten auftreten, wenn Android Ihre Aktivität aus dem Aktivitätsstapel entfernt hat. In diesem Fall wird Ihr Thread erneut geladen, obwohl er in der Vergangenheit ausgeführt wurde, weil die frühere Instanz von Android gelöscht wurde.
0 Stimmen
Aber definitiv ist die 2. Variante vorzuziehen, wenn es um die Benutzerfreundlichkeit geht.
0 Stimmen
Wenn es nicht zu lange dauert, ziehe ich es vor, die Benutzerinteraktion zu verhindern, indem ein Fortschrittsdialog angezeigt wird, wenn AsyncTask zum REST-Server geht.
1 Stimmen
Das tue ich auch. Aber Sie können immer auf Home drücken.
0 Stimmen
Oder einen Telefonanruf erhalten.