diff options
Diffstat (limited to 'src/android/jar/src/org/qtproject/qt/android/QtServiceBase.java')
-rw-r--r-- | src/android/jar/src/org/qtproject/qt/android/QtServiceBase.java | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/android/jar/src/org/qtproject/qt/android/QtServiceBase.java b/src/android/jar/src/org/qtproject/qt/android/QtServiceBase.java new file mode 100644 index 0000000000..b69dea4416 --- /dev/null +++ b/src/android/jar/src/org/qtproject/qt/android/QtServiceBase.java @@ -0,0 +1,51 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +package org.qtproject.qt.android; + +import android.app.Service; +import android.content.Intent; +import android.os.IBinder; +import android.util.Log; + +public class QtServiceBase extends Service { + @Override + public void onCreate() + { + super.onCreate(); + + // the application has already started, do not reload everything again + if (QtNative.getStateDetails().isStarted) { + 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."); + return; + } + + QtNative.setService(this); + + QtServiceLoader loader = new QtServiceLoader(this); + loader.loadQtLibraries(); + QtNative.startApplication(loader.getApplicationParameters(), loader.getMainLibraryPath()); + QtNative.setApplicationState(QtNative.ApplicationState.ApplicationHidden); + } + + @Override + public void onDestroy() + { + super.onDestroy(); + QtNative.quitQtCoreApplication(); + QtNative.terminateQt(); + QtNative.setService(null); + QtNative.getQtThread().exit(); + System.exit(0); + } + + @Override + public IBinder onBind(Intent intent) { + synchronized (this) { + return QtNative.onBind(intent); + } + } +} |