Ich habe ein Problem mit RxJava, Retrofit und Multi-Window-Modus ... Ich rufe unsere eigene API mit Retrofit in einer Aktivität (der eigentliche Code ist ein bisschen komplexer als das):
%Vor%Wenn die App im "normalen" Modus ist (Vollbildmodus), läuft alles gut ... Ich kann die App in bg einfügen, sie wieder in den Vordergrund stellen und die api Anrufmethode erneut aufrufen (sie liegt in der onResume Methode - Art von) und die Benutzeroberfläche wird ohne Probleme gezeichnet. Wenn ich den Multi-Window-Modus aktiviere, wird stattdessen onResume aufgerufen, die API-Methode wird mit Erfolg aufgerufen, aber die Methode subscribe () wird nie erreicht. Der Stacktrace für diese Situation ist:
%Vor%Die App stürzt nicht ab, aber die Benutzeroberfläche bleibt in einem "Platzhalter" -Zustand und die Lade-ProgressBar bleibt für immer bestehen.
BEARBEITEN: Ich habe die gleiche Code-Struktur in anderen Aktivitäten. Das Problem taucht jedoch nirgendwo sonst auf.
Es gibt eine merkwürdige Abfolge von Lebenszyklus-Callbacks, wenn eine App in den Multi-Window-Modus eintritt. Ich habe onStart
, onResume
, onPause
und onStop
angemeldet. Siehe Ergebnisse:
Also verliert die zuerst geöffnete App den Fokus, dann wird der Fokus erhöht und später verliert sie wieder den Fokus (der Fokus geht zum nächsten Fenster).
Ich glaube, dass Sie sich in onPause
abmelden, weil Sie das Abonnement in onResume
initiiert haben. Und deshalb wird subscribe()
nie aufgerufen, weil es sofort abgemeldet wird.
Tags und Links java android android-activity rx-java multi-window