2016-06-23 12 views
1

Heute hatte ich eine Prüfung, wo ich einige Datenbankdaten an Android-Anwendung liefern musste, und ich erstellte Socket-Protokoll, das ich Server mit AsyncTask-Klasse aufgerufen habe, um mir die domänenspezifischen angeforderten Daten zu liefern. Aber mein Lehrer sagte mir, dass die AsyncTask-Klasse veraltet ist und es gibt eine andere Möglichkeit, das Problem zu lösen. Können Sie mir sagen, wie ich das Problem lösen könnte, ohne AsyncTask-Klasse, Domänenklassen und Soket-Kommunikation zu verwenden?AsyncTask besseres Kommunikationsprotokoll

Dank

+1

AsyncTask ist nicht veraltet oder veraltet. Vielleicht hast du das falsch verstanden. –

+0

Die Dokumentation geht über [Durchführen von Netzwerkoperationen] (https://developer.android.com/training/basics/network-ops/index.html). Es ist unklar, ob Sie explizit ein Socket-Objekt geöffnet haben. –

Antwort

0

Sie können einige HTTP-Request-Bibliothek wie "Volley" oder "OkHttp" (mein Favorit)

verwenden Sie Ihre eigenen Server-API erstellen, so zu kommunizieren:

  • Telefon http-Anfrage an eine Web-API senden -> Web-API die Anfrage empfangen, verarbeiten und anrufen Datenbank

  • Datenbank Antworten und die Daten an den Web-API senden -> Web-API, um die Datenbank Antwort erhalten und auf Ihr Telefon senden -> Ihr Telefon die Daten

empfangen können Sie verwenden Json oder XML für die Datenübertragung (bevorzugen Json für die Einfachheit)

Entsprechend dem android Wiki, "AsyncTask" ist nicht veraltet!

1

AsyncTask ist nicht veraltet (noch ist es veraltet), aber es ist wahrscheinlich keine gute Wahl für dauerhafte Socket-Kommunikation. AsyncTask eignet sich besser für relativ kurzlebige Operationen, einschließlich solcher, die Änderungen an der Benutzeroberfläche vornehmen, um den Fortschritt anzuzeigen, oder nach Fertigstellung, da das Threading für Sie ausgeführt wird. Da Sie AsyncTask verwenden können, um die Benutzeroberfläche zu ändern, verknüpfen die meisten Menschen die AsyncTask mit ihrer Activity oder einige ihrer View s, die ein Problem sein können, da jede Konfigurationsänderung die Activity zerstört und neu erstellt werden kann, aber Sie haben noch eine AsyncTask Leben in Erinnerung an den gesamten Kontext Activity halten.

Für etwas wie ein persistenter Socket, sind Sie besser dran mit einer Service, die eine separate Anwendungskomponente ist, die Konfigurationsänderungen wie Activity s nicht tun wird. Sie können den Lebenszyklus auch anders verwalten, während der Lebenszyklus hauptsächlich durch Benutzerinteraktion bestimmt wird.

0

Sie müssen Status vollständige Verbindung erstellen mit TCP/UDP-Protokoll, beide implementieren Scoket-Programmierung, dann können Sie Daten an Android-Client übergeben. Eine andere Möglichkeit besteht darin, Google Messaging (GCM) über GCM zu verwenden, um Daten an Ihre Android-Anwendung zu senden. ODER Sie können Open fire für Socket-Programmierung verwenden.