Имеется приложение на Qt/QML под Android. Qt 5.9.2.
Мне нужно при закрытии программы сделать сохранение некоторых значений.
И я никак не могу отловить момент закрытия программы. Например, пользователь «смахнул» программу в спике открытых программ, и мне надо в программе успеть обработать этот момент.
Я искал всякие решения. Пробовал через QML так:
Window {
id: mainWindow
Connections {
target: mainWindow
onClosing: {
console.log("On QML main windows close.");
close.accepted = true
}
}
}
Пробовал на более низком уровне и через сигнал aboutToQuit() и в деструкторе объекта приложения:
class App : public QApplication
{
Q_OBJECT
public:
App(int &argc, char **argv);
virtual ~App();
private slots:
void onAaboutToQuit();
}
#include "App.h"
App::App(int &argc, char **argv) : QApplication(argc, argv)
{
connect( this, SIGNAL(aboutToQuit()), this, SLOT(onAaboutToQuit()) );
}
App::~App()
{
qWarning() << "Application destructor. Exit from application.";
}
void App::onAaboutToQuit()
{
qWarning() << "onAaboutToQuit(): Exit from application.";
}
Результат таков: на десктопе все эти методы работают при закрытии окна. А на Андроиде при смахивании приложения - нет.
Вопрос: есть ли гарантированно работающий способ отлавливания закрытия приложения на Android в Qt?
Неужели придется городить подсистему периодического сохранения значений, которая будет тупо выжирать ресурс SD-карточки?