From 734c1268269a71b16829d36179e4a090f76c785e Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Mon, 28 Jul 2014 10:41:44 +0300 Subject: Android: Really suspend apps that are put in the background The main event loop will be paused when an application is suspended, this is also the normal behavior of any Android application. When an application is suspended on Android all its Gl surfaces are destroyed and can't be used to render anymore. So, we need to pause the main event loop in order to pause all the timers which might trigger drawings. The event loop is resumed immediately after the application is foreground. AndroidManifest.xml contains more info about how to disable this behavior and what might happen if you do it. [ChangeLog][Android][Important Behavior Changes] The main event loop is now stopped when the app is suspended Task-number: QTBUG-36274 Change-Id: I4c0ba5df9d95f348bca67ea5c76865d6d20775e4 Reviewed-by: Thiago Macieira Reviewed-by: Paul Olav Tvete --- src/android/java/AndroidManifest.xml | 8 ++++++++ .../java/src/org/qtproject/qt5/android/bindings/QtActivity.java | 7 +++++++ 2 files changed, 15 insertions(+) (limited to 'src/android/java') diff --git a/src/android/java/AndroidManifest.xml b/src/android/java/AndroidManifest.xml index 8e551ba7ac..e5060f0de9 100644 --- a/src/android/java/AndroidManifest.xml +++ b/src/android/java/AndroidManifest.xml @@ -36,6 +36,14 @@ --> + + + + + diff --git a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java index 13d6359d36..c70f1d1aaf 100644 --- a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java +++ b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java @@ -892,6 +892,13 @@ public class QtActivity extends Activity getWindow().setBackgroundDrawableResource(m_activityInfo.metaData.getInt("android.app.splash_screen_drawable")); else getWindow().setBackgroundDrawable(new ColorDrawable(0xff000000)); + + if (m_activityInfo.metaData.containsKey("android.app.background_running") + && m_activityInfo.metaData.getBoolean("android.app.background_running")) { + ENVIRONMENT_VARIABLES += "QT_BLOCK_EVENT_LOOPS_WHEN_SUSPENDED=0\t"; + } else { + ENVIRONMENT_VARIABLES += "QT_BLOCK_EVENT_LOOPS_WHEN_SUSPENDED=1\t"; + } startApp(true); } } -- cgit v1.2.3