Angenommen, dass here gesagt wurde, liegt es in der Verantwortung des Entwicklers, die Komponenteninstanz beizubehalten, um ihre eigene Bereichslogik zu implementieren (da eine Bereichsmethode dieselbe Instanz für eine bestimmte Komponente zurückgibt).Handhabung der Dolchkomponente bei einer Orientierungsänderung
Wie kann diese Komponentenreferenz während des Aktivitätslebenszyklus sauber gehalten werden?
Beispiel: Sie implementieren das MVP-Muster, sodass Sie einen Moderator in Ihrer Aktivität benötigen. Dieser Presenter kann eine Netzwerkoperation ausführen, um Elemente herunterzuladen. Wenn sich das Gerät dreht, wird Ihre Aktivität zerstört und neu erstellt, aber Sie möchten den Netzwerkbetrieb aufrechterhalten und nur den Prä-Rotations-Presenter zurückbekommen. Stellen Sie sicher, dass die Komponente, die den Presenter mit einem angepassten PerActivity-Bereich bereitstellt, die Lösung ist. Daher müssen Sie die Component-Instanz durch diese Rotation halten, damit dieselbe Presenter-Instanz wie beim ersten Start der Aktivität injiziert wird.
Wie können wir damit umgehen? Ich dachte an eine Art Komponenten-Cache (wie eine HashMap?), Der von einer Anwendungskomponente innerhalb der Application-Klasse bereitgestellt werden könnte.
Ihre Optionen sind: - Komponente Cache in der Anwendung; - benutzerdefinierte Nicht-Konfigurationsinstanz; - Zurückgebliebenes Fragment. – EpicPandaForce
** Persönlich ** Ich blockiere nur Ereignis-Dispatch durch den Ereignis-Bus, während die aktuelle Aktivität nicht "resume" ist, und den Presenter-Status in einem Bündel, dann seinen Zustand wiederherzustellen, bevor die Ereignisse fortgesetzt werden. Und meine Moderatoren sind deshalb nicht gescannt. – EpicPandaForce
Wie können Sie den Presenter-Status in einem Bundle speichern, wenn dieser Status beispielsweise ein OkHttp-Client ist, der Daten herunterlädt? In diesem Fall scheint ein Moderatorcache erforderlich zu sein. –