diff --git a/src/android/jar/src/org/qtproject/qt/android/QtActivityBase.java b/src/android/jar/src/org/qtproject/qt/android/QtActivityBase.java index 37a49238ef8..1a4b0c67031 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtActivityBase.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtActivityBase.java @@ -120,6 +120,7 @@ public class QtActivityBase extends Activity super.onPause(); if (Build.VERSION.SDK_INT < 24 || !isInMultiWindowMode()) QtNative.setApplicationState(QtNative.ApplicationState.ApplicationInactive); + m_delegate.displayManager().unregisterDisplayListener(); } @Override @@ -128,6 +129,7 @@ public class QtActivityBase extends Activity super.onResume(); QtNative.setApplicationState(QtNative.ApplicationState.ApplicationActive); if (QtNative.getStateDetails().isStarted) { + m_delegate.displayManager().registerDisplayListener(); QtNative.updateWindow(); // Suspending the app clears the immersive mode, so we need to set it again. m_delegate.displayManager().updateFullScreen(); diff --git a/src/android/jar/src/org/qtproject/qt/android/QtDisplayManager.java b/src/android/jar/src/org/qtproject/qt/android/QtDisplayManager.java index 13741764164..a899a1540e9 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtDisplayManager.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtDisplayManager.java @@ -95,7 +95,6 @@ public class QtDisplayManager { }; } - // TODO: unregister the listener upon activity destruction as well public void registerDisplayListener() { DisplayManager displayManager = @@ -103,6 +102,13 @@ public class QtDisplayManager { displayManager.registerDisplayListener(m_displayListener, null); } + public void unregisterDisplayListener() + { + DisplayManager displayManager = + (DisplayManager) m_activity.getSystemService(Context.DISPLAY_SERVICE); + displayManager.unregisterDisplayListener(m_displayListener); + } + public static int getNativeOrientation(Activity activity, int rotation) { int nativeOrientation;