summaryrefslogtreecommitdiffstats
path: root/src/android/java/src/org/qtproject/qt5/android/bindings
diff options
context:
space:
mode:
authorSamuel Mira <samuel.mira@qt.io>2022-05-01 16:51:16 +0300
committerSamuel Mira <samuel.mira@qt.io>2022-06-07 21:36:35 +0300
commit51e1491af24400b525812fd0250da6d0833be120 (patch)
tree4d6cb2838682afb3492fa22a0013d7da28777156 /src/android/java/src/org/qtproject/qt5/android/bindings
parent04ec9c5593f0ac067dd39ccfca65c768419dc1fd (diff)
Android: Fix ANR when QtService and QtActivity load in same process
This patch is a fix to prevent the ANR. In this patch, the QtService queries QtNative if there is a QtActivity or QtService started and, in case there is, it does not begin the loading process. When that happens, the QtService will be a regular android Service. Fixes: QTBUG-99691 Change-Id: Ibd8aa8554107a9744b53cca4e0dd7e6f9b25baea Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> Reviewed-by: Nicholas Bennett <nicholas.bennett@qt.io> (cherry picked from commit 08a4fd357064cfefd8de7af13025a9f1cb04cafb)
Diffstat (limited to 'src/android/java/src/org/qtproject/qt5/android/bindings')
-rw-r--r--src/android/java/src/org/qtproject/qt5/android/bindings/QtService.java13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/android/java/src/org/qtproject/qt5/android/bindings/QtService.java b/src/android/java/src/org/qtproject/qt5/android/bindings/QtService.java
index 67ced7524c..9fc8aaa181 100644
--- a/src/android/java/src/org/qtproject/qt5/android/bindings/QtService.java
+++ b/src/android/java/src/org/qtproject/qt5/android/bindings/QtService.java
@@ -37,6 +37,7 @@
package org.qtproject.qt5.android.bindings;
import android.app.Service;
+import android.util.Log;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
@@ -54,7 +55,17 @@ public class QtService extends Service
/////////////// PLEASE DO NOT CHANGE THE FOLLOWING CODE //////////////////////////
//////////////////////////////////////////////////////////////////////////////////
protected void onCreateHook() {
- m_loader.onCreate();
+ // the application has already started
+ // do not reload everything again
+ if (QtNative.isStarted()) {
+ m_loader = null;
+ Log.w(QtNative.QtTAG,
+ "A QtService tried to start in the same process as an initiated " +
+ "QtActivity. That is not supported. This results in the service " +
+ "functioning as an Android Service detached from Qt.");
+ } else {
+ m_loader.onCreate();
+ }
}
@Override
public void onCreate()