Ich habe einen Android-App, die einen Retrofit-Service-Aufruf uploadPhoto
nach dem Button-Klick macht.Griff Retrofit Service-Antwort in RxJava Android App nach der Orientierung ändern
In diesem Aufruf Antwortdienst Ich mag würde eine Foto-ID erhalten, damit ich an die Dienstantwort oder Fehler hören müssen. Ich habe den Code, der diesen
Signletons.retrofitService.uploadPhoto(photoData)
.subscribe(new Action1<Response<UploadResponse>>() {
@Override
public void call(Response<UploadResponse> response) {
// response.body().photoId
}
})
Griffe Aber wenn die Aktivität aufgrund der Orientierungsänderung zerstört wird, ich abmelden aus der obigen beobachtbare und dies kann irgendwo zwischen meinem Foto Anfrage passiert gesendet wurde, aber bevor die Antwort empfangen wird. Dies bedeutet, dass ich das Foto hochladen kann, aber nicht die Foto-ID.
Was ist der beste Weg, um diese Situation zu handhaben und nach der Orientierung Änderungen resubscribe das Ergebnis, das ich aufgrund der Orientierungsänderung verpaßt zu bekommen?
Wie es erneut abonnieren hilft, wenn die Aktivität neu erstellt wird wieder? –
Sie haben Recht. Es wird nicht helfen. Sie können das Observable nicht erneut in der onCreate-Methode abonnieren, da die vorherige nicht abgemeldet ist. – dwursteisen
Wenn ich dieses Observable nicht abbestellen werde, bleibt der Handler dieses Observablen in der Aktivität, die zerstört wird. Wenn das Ergebnis eintrifft, würde es keinen Sinn haben, es in der zerstörten Aktivität zu behandeln. Noch mehr, die Aktivität vor der Zerstörung zu bewahren ist eine sehr teure Operation. –