【发布时间】:2014-12-13 21:24:18
【问题描述】:
我创建了一个重现问题的简单程序。当我锁定手机时,或者如果我切换到我的 Android 手机中的另一个应用程序,工作线程会继续打印,但事件循环会停止。当我切换回我的应用程序时,事件循环会继续。
如果我用 QCoreApplication 替换 QGuiApplication,问题就消失了。如果我使用 Qt 5.2 而不是 Qt 5.3 进行编译,问题就会消失。 Qt 5.4 和 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();
}
当应用失去焦点时,如何防止 QGuiApplication 停止事件循环?即使不在前台,我也需要我的应用来处理事件。
【问题讨论】:
-
能显示logcat的输出吗?
-
sashoalm,我为您创建了一个错误报告,但请为开发人员提供有关操作系统和手机的更多详细信息:bugreports.qt-project.org/browse/QTBUG-43434
-
我可能还会验证应用程序状态(更改的信号等)。
-
@lpapp 这是 logcat 输出 - pastebin.com/1WGPYFue。
标签: android c++ qt qt5.3 qt5.4