Threading in Android

Ich bin derzeit die Entwicklung Android-Anwendung, es braucht Download-Inhalte aus dem Internet. Ich benutze Thread zu tun, und dann rufen Sie runOnUiThread Methode, um GUI zu aktualisieren.

  1. Ich habe ein Refresh-Menü darauf gelegt, wenn der Benutzer versucht hat, den Inhalt zu aktualisieren, wird der Download-Thread erstellt und gestartet. Das Problem ist, dass, wie kann ich die Thread-Reihenfolge zu kontrollieren, muss ich die Antwort der letzten Anforderung akzeptieren und vorherige Thread-Anfragen aufgeben, wenn es einige andere Anfragen noch läuft, weil die Anforderungsparameter möglicherweise durch Benutzer geändert wurden. Derzeit habe ich mit einem threadId, um diese Sache zu tun, wenn ein Thread beendet ist, wird es seine ThreadId überprüfen, wenn es die neueste wiederhergestellt wurde, dann nimmt sie die Kontrolle und macht die Antwort. Meine Frage ist, dass gibt es eine andere richtige bessere Lösung für diese?
  2. Muss ich die Threads stoppen, wenn der Benutzer die App beendet hat? Ich erinnere mich, dass ein Buch sagte, dass nicht versuchen, Faden manuell zu stoppen und warten Sie sich fertig ist eine gute Praxis, ist das wahr? Soll ich sie aufhören, indem sie "Stop" oder "Interrupt" -Methode anrufen?
  3. Ich lese einige Dokumente rund um Threading in Android und fand die Klasse HandlerThread , was ist das? In welcher Situation muss ich es benutzen?

  • Android Gradle Hinzufügen von externen Bibliothek und verschachtelte externe Bibliotheken zu einem Projekt
  • Android: Bug in launchMode = "SingleTask"? -> Aktivitätsstapel nicht erhalten
  • Hat View.removeAllViews () Speicher freigeben?
  • Neu veröffentlichte "Authentifizierung mit Google Play Services", Probleme mit einem Token über GoogleAuthUtil.getToken
  • Sofort laufen in Android Studio 2.0 (wie man ausschaltet)
  • Android Facebook SDK 4.0.0 Der Rückruf funktioniert nicht richtig
  • Android - Speichern sensibler Daten in der sqlite Datenbank
  • Android SyncAdapter mit einem Google-Konto
  • Ausblenden von Symbolleiste auf scroll mit recyclerview inside fragment
  • So erstellen Sie eine benutzerdefinierte Bitmap-Marker mit Android-Map API v2
  • Keyboard Zeigt die Position der verworfenen Elemente an
  • Wo ist die SampleZipfileProvider-Klasse?
  • 3 Solutions collect form web for “Threading in Android”

    Anstatt einen neuen Thread für jede Auffrischungsaktion zu starten, würde ich einen einzigen Thread für alle Hintergrund-Download-Arbeit erstellen, die Loops und Downloads von Inhalten, wie in einer Warteschlange aufgestellt. Damit wird sichergestellt, dass Sie den Inhalt nicht gleichzeitig herunterladen und auch Ressourcen sparen.

    In der GUI schlägst du einfach eine Refresh-Anforderung, wenn der Benutzer Sie auffordert und einen laufenden Download abbrechen kann, indem er HttpRequestBase.abort auf der http-Methode-Instanz HttpRequestBase.abort . Der Hintergrund-Thread sollte eine SocketException empfangen und fangen und zur nächsten Warteschlange anfordern.

    Um den Hintergrund-Thread zu beenden, musst du nur seine Schleife beenden. Sie können die Looper und Handler Klassen verwenden, um Ihnen zu helfen, mit all den oben genannten, die HandlerThread Klasse Sie erwähnt ist einfach eine praktische Klasse, um einen Thread, der einen Looper hat zu erstellen.

    Das Problem mit der interrupt eines Threads ist, dass es nicht brechen Sie aus einer blockierenden I / O-Anfrage und Handhabung einer InterruptException korrekt kann kompliziert sein. Also abhängig von der Situation würde ich ja sagen, es ist besser, den Thread zu beenden, indem er von seiner Laufmethode zurückkehrt.

    Ich entdecke diese Woche AsyncTask, und ich ersetze Thread von AsyncTask an einem Ort in meinem Programm,
    Sie haben doc & sample hier, wirklich einfach zu bedienen:
    http://developer.android.com/reference/android/os/AsyncTask.html
    Wenn ich mit Thread GUI war Lock, und jetzt ist es nicht gesperrt.
    Und es ist möglich, eine AsyncTask abzubrechen (aber ich versuche nie)

    Sie können einen IntentService verwenden , um Ihre Hintergrundoperationen zu starten, der Dienst wird als "Arbeitswarteschlangenprozessor" betrieben und führt Ihre Anrufe in der Reihenfolge aus.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.