如何在Android环境中捕获QApplication :: aboutToQuit? 它在Windows上可以完美运行,但是当用户在Android上关闭应用程序时永远不会调用它。
我正在使用Qt 5.12.2,QQuick2。
它在Android Emulator和Android手机上均不起作用。
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QuitEventHandle test;
QObject::connect(&app, &QCoreApplication::aboutToQuit, &test, &QuitEventHandle::aboutToQuit);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}
class QuitEventHandle : public QObject
{
Q_OBJECT
public:
QuitEventHandle(QObject *parent=nullptr);
virtual ~QuitEventHandle() override;
public slots:
void aboutToQuit();
};
QuitEventHandle::QuitEventHandle(QObject *parent) : QObject(parent)
{
}
QuitEventHandle::~QuitEventHandle()
{
}
void QuitEventHandle::aboutToQuit()
{
int a = 2;
}
答案 0 :(得分:1)
只是一个想法。 Android上的应用程序生命周期与PC上的生命周期完全不同。当用户“关闭”应用程序时,它不一定关闭。相反,它经历了几个阶段:onPause
,onStop
和onDestroyed
。
这可能是因为即使关闭应用程序QApplication
仍在运行,所以没有发出信号。
如果您想获取有关Android的Activity生命周期的更多信息:https://developer.android.com/guide/components/activities/activity-lifecycle
您也许可以使用QGuiApplication::applicationStateChanged(Qt::ApplicationState state)
答案 1 :(得分:1)
我的解决方案: