Ich habe ein einfaches Programm erstellt, das das Problem reproduziert. Wenn ich das Telefon sperre, oder wenn ich zu einer anderen Anwendung in meinem Android-Telefon, wechsle, wird der Worker-Thread weiterhin gedruckt, aber die Ereignisschleife stoppt. Wenn ich zu meiner Anwendung zurückwechsle, wird die Ereignisschleife fortgesetzt.QGuiApplication stoppt die Ereignisschleife, wenn das Telefon gesperrt ist, wenn es mit Qt 5.3 oder Qt 5.4 kompiliert wird (aber nicht mit Qt 5.2)
Wenn ich QGuiApplication durch QCoreApplication ersetze, verschwindet das Problem. Wenn ich mit Qt 5.2 statt Qt 5.3 kompiliere, verschwindet das Problem. Qt 5.4 hat das gleiche Problem wie Qt 5.3.
static int count = 0;
void workerThread()
{
while (1) {
qDebug("Worker thread %d", count++);
sleep(1);
}
}
void MyObject::step()
{
qDebug("Event loop %d", count++);
}
int main(int argc, char *argv[])
{
QGuiApplication a(argc, argv);
MyObject w;
QTimer timer;
QObject::connect(&timer, SIGNAL(timeout()), &w, SLOT(step()));
timer.start(1000);
QtConcurrent::run(workerThread);
return a.exec();
}
Wie verhindere ich, dass QGuiApplication die Ereignisschleife stoppt, wenn die App den Fokus verliert? Ich brauche meine App, um Ereignisse zu verarbeiten, auch wenn sie nicht im Vordergrund sind.
können Sie zeigen die Ausgabe von logcat? – lpapp
sashoalm, die ich für Sie einen Bugreport geschaffen, sondern Bitte geben Sie weitere Details über das Betriebssystem und Telefon für die Entwickler: https://bugreports.qt-project.org/browse/QTBUG-43434 – lpapp
Ich würde wahrscheinlich auch überprüfen, dass Anwendungsstatus (Signal geändert, etc). – lpapp