7 Stimmen

Android-Service-Entwurf mit mehreren Threads

Eine neue Frage zu Android und Services. Derzeit entwickle ich eine App, die Bilder an einen Server senden soll. Es sollte auch möglich sein, mehrere Bilder parallel zu senden.

Ich habe einen Service erstellt, der für jedes Bild ein neues Bild erstellt. Die Aktivität kann sich an diesen Service binden und Informationen über den Fortschritt sammeln. Ich möchte den aktuellen Status für jedes Bild in einer Benachrichtigung anzeigen (und wenn der Benutzer auf eine Benachrichtigung klickt, sollte eine Aktivität mit dem Fortschritt für dieses Bild angezeigt werden).

Aber ich habe einige Probleme mit diesem Ansatz. Es gibt Fehler beim Binden, das Benachrichtigungsausstehende Ereignis startet die Aktivität komplett neu, sodass ich Informationen über aktuell sendende Bilder verliere und so weiter.

Kann mir bitte jemand sagen, wie ich ein solches Problem angemessen gestalten könnte.

Danke

9voto

Janusz Punkte 181894

Ich würde ein Controller-Objekt verwenden, das in Ihrer Anwendung erstellt wird. Dieser Controller ist für alle Ihre Aktivitäten gleich. Wenn ein Bildupload gestartet wird, erstellt der Controller einen neuen Dienst/Thread und überwacht dessen Zustand und zeigt die Benachrichtigung an. Jede Aktivität kann jetzt den Controller nach dem Zustand ihres Prozesses fragen und die entsprechenden Informationen dem Benutzer anzeigen. Auf diese Weise wird der Controller, der im Anwendungslebenszyklus lebt, an den Dienst und nicht an die kurzlebige Aktivität gebunden.

Es gab einen Vortrag von Mark Brady auf der Droidcon zu diesem Thema, die Folien finden Sie auf slideshare. Insbesondere interessant wird es im späteren Teil der Folien, wenn die von Mark verwendete Architektur erklärt wird. Ich habe mit dem gleichen Problem einige Wochen gekämpft und bin zu den gleichen Ergebnissen gekommen. Ich bin froh, dass endlich eine Art Ressource zu diesem Thema im Netz existiert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X