Ho creato un semplice programma che riproduce il problema. Quando blocco il telefono o se passo a un'altra applicazione nel mio telefono Android, , il thread di lavoro continua a stampare, ma il ciclo di eventi si interrompe. Quando torno alla mia applicazione, il ciclo degli eventi riprende.QGuiApplication arresta il ciclo di eventi quando il telefono è bloccato quando compilato con Qt 5.3 o Qt 5.4 (ma non con Qt 5.2)
Se si sostituisce QGuiApplication con QCoreApplication, il problema scompare. Se compilo con Qt 5.2 invece di Qt 5.3, il problema scompare. Qt 5.4 ha lo stesso problema di 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();
}
Come posso evitare QGuiApplication da fermare il ciclo degli eventi quando l'applicazione perde lo stato attivo? Ho bisogno della mia app per elaborare gli eventi anche quando non sono in primo piano.
si può mostrare l'output di logcat? – lpapp
sashoalm, ho creato un bugreport per voi, ma si prega di fornire maggiori dettagli sul sistema operativo e sul telefono per gli sviluppatori: https://bugreports.qt-project.org/browse/QTBUG-43434 – lpapp
Probabilmente verificherei anche lo stato dell'applicazione (segnale modificato, ecc.). – lpapp