Ich versuche, Android-App zu erstellen, die mehrere Aktivitäten und einen Socket für alle von ihnen verwenden wird. Ich habe verstanden, dass ich Service
verwenden sollte, die Socket enthalten wird, der mit dem Server verbunden wird. Jede Activity
wird einige bestimmte Anforderungen an den Server verwenden (z. B. erste Aktivität kann Benutzer laden und zweitens können sie Nachrichten senden). Also, wie kann ich die Antworten vom Server zwischen Aktivitäten navigieren (z. B. Liste der Benutzer werden an die erste Activity
übergeben, und Nachrichten werden auf die zweite Activity
geladen werden)?Übergeben Sie verschiedene Antworten vom Server in verschiedenen Aktivitäten
Antwort
Wie Sie sagen, Sie verwenden Service
zum Laden von Daten vom Server, nachdem die Daten bekommen Sie Antwort Griff nach Art der Reaktion ab, die Sie LocalBroadcast
Feuer und erhalten, dass in der Aktivität mit dynamischer BroadcastReceiver
Siehe Anleitung für LocalBrodcast
Ihr Dienst kann ein Router für Ihre Aktivitäten sein. Durch spezifische Antwort (Zuordnung zu switch-case-ids) wird die entsprechende Aktivität gestartet. Eine gestartete Aktivität kann zum Chatten an den Dienst gebunden werden.
Und wenn die Instanz der Aktivität bereits existiert? –
Spiel mit Absichtsflaggen ex. [FLAG_ACTIVITY_REORDER_TO_FRONT] (https://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_REORDER_TO_FRONT) –
Danke, ich werde diese Lösung überprüfen, aber ich möchte dies verdeutlichen: also werde ich Socket im Dienst speichern welches mit der Instanz der Anwendung verknüpft wird. Alle Aktivitäten werden Aufruf-Methode in der Anwendung sein, die den Dienst zurückgibt. Aber was passiert, wenn meine Aktivität den Dienst anfordert, bevor er gebunden wird? Wie kann ich das verhindern? Und vielleicht können Sie etwas besser beraten, dieses Ding zu tun? –
Aber was passiert, wenn meine Aktivität den Dienst anfordert, bevor er gebunden wird? Ich verstehe nicht, was genau du sagen willst? –
Ich meinte, wenn meine Aktivität versucht, Methoden in Dienst zu rufen, bevor der Dienst gebunden wird. Z.B. Ich starte die App, nachdem die Anwendung und die Anwendung gestartet wird, in Application :: onCreate() habe ich bindService(), in Activity :: onCreate() habe ich 'service = ((AppCore) this.getApplication()). GetService(); 'aber wenn der Dienst immer noch nicht gebunden ist, werde ich in 'Dienst' null erhalten. –