Wie kann verhindert werden, dass sich die Bildschirmausrichtung ändert, wenn die Aktivität auf Geräten mit Android 8.1 Version beendet wird?

8

Ich arbeite an einer App und habe ein seltsames Verhalten auf 8.1-Geräten (Pixel2, Nexus5x) festgestellt, also habe ich eine kleine App geschrieben, um dieses Verhalten zu überprüfen.

MainActivity ist an portrait mode gebunden, während LandscapeActivity für landscape gesperrt ist. MainActivity startet die LandscapeActivity für das Ergebnis. Bildschirmwechsel von portrait auf landscape wie erwartet. Wenn LandscapeActivity beendet ist, wird das Ergebnis an MainActivity weitergegeben, während (wie erwartet) zurück zu portrait gewechselt wird.

Aber manchmal stoße ich hier auf einen Fehler. Nach onActivityResult in MainActivity wird von portrait auf landscape umgeschaltet, um sofort zu portrait zurückzukehren. Während ich mit dem Staat umgehen kann, sieht es immer noch böse aus.

Für die Rückverfolgbarkeit werde ich alles posten, um es neu aufzubauen.

Was kann ich tun, um das zu verhindern? Beachten Sie auch, dass es nicht jedes Mal passiert und soweit ich nur auf 8.1 Geräten testen kann. Es scheint gut auf Android-Geräten unter 8.1

BEARBEITEN: % Co_de% zu meinem Manifest hinzugefügt, wie @Floern in seiner Antwort ohne Erfolg vorgeschlagen hat. Eine Bestätigung auf einem Plattformfehler wird auch eine akzeptable Antwort sein.

Manifestieren

%Vor%

MainActivity

%Vor%

LandschaftsAktivität

%Vor%

build.gradle

%Vor%

Layout android:configChanges="orientation|screenSize" Datei:

%Vor%

Und zuletzt ein Log vom wiederholten Klicken auf Buttons:

%Vor%     
Rafael T 04.01.2018, 14:11
quelle

2 Antworten

2

Dieser Fehler wurde behoben. Also warte auf das nächste Release / Patch.

    
Senya.dev 17.01.2018, 11:34
quelle
2

Dies könnte tatsächlich ein Framework-Fehler sein. Ein ähnliches Verhalten habe ich bei Samsung-Geräten festgestellt, als ich die Kamera-App (via Intent) im Querformat von einer Nur-Porträt-App aus benutzte. Ich konnte nicht herausfinden, was genau die Ursache ist, aber ich fand einen Work-Around, der den Effekt minimiert.

Wenn Sie dem System mitteilen, dass Sie mit der Ausrichtung umgehen möchten, ändern Sie es selbst, indem Sie android:configChanges="orientation|screenSize" zu Ihrer Aktivität hinzufügen. Es wird nicht bei einer Orientierungsänderung neu erstellt. Auf diese Weise können Sie den Aufwand vermeiden, die Aktivität (zweimal) neu zu erstellen, wodurch sich die Leistung bis zu dem Punkt verbessern lässt, an dem Sie die Ausrichtung überhaupt nicht bemerken.

%Vor%     
Floern 04.01.2018 14:38
quelle