Seltsame Lebenszyklus-Callbacks, die beim Eintritt in den Multi-Window-Modus geordnet sind

8

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.

    
nicopasso 03.04.2017, 10:23
quelle

1 Antwort

1

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:

%Vor%

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.

    
azizbekian 07.04.2017, 06:01
quelle