diff --git a/src/android/jar/src/org/qtproject/qt/android/QtNative.java b/src/android/jar/src/org/qtproject/qt/android/QtNative.java index 33ffd58482f..9f759b18c7e 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtNative.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtNative.java @@ -378,13 +378,15 @@ public class QtNative static void quitQt() { - terminateQt(); - m_stateDetails.isStarted = false; - notifyAppStateDetailsChanged(m_stateDetails); - getQtThread().exit(); - synchronized (m_qtThreadLock) { - m_qtThread = null; - } + runAction(() -> { + terminateQt(); + m_stateDetails.isStarted = false; + notifyAppStateDetailsChanged(m_stateDetails); + getQtThread().exit(); + synchronized (m_qtThreadLock) { + m_qtThread = null; + } + }); } @UsedFromNativeCode diff --git a/src/plugins/platforms/android/androidjnimain.cpp b/src/plugins/platforms/android/androidjnimain.cpp index 1089f24e9d3..8919aefe82c 100644 --- a/src/plugins/platforms/android/androidjnimain.cpp +++ b/src/plugins/platforms/android/androidjnimain.cpp @@ -471,8 +471,10 @@ static void startQtApplication(JNIEnv */*env*/, jclass /*clazz*/) qWarning() << "dlclose failed:" << dlerror(); } - if (m_applicationClass && QtAndroid::isQtApplication()) - QJniObject::callStaticMethod(m_applicationClass, "quitApp", "()V"); + if (m_applicationClass) { + const auto quitMethodName = QtAndroid::isQtApplication() ? "quitApp" : "quitQt"; + QJniObject::callStaticMethod(m_applicationClass, quitMethodName); + } sem_post(&m_terminateSemaphore); sem_wait(&m_exitSemaphore);