gpt4 book ai didi

android - 当使用 Qt 5.3 或 Qt 5.4(但不是 Qt 5.2)编译时,QGuiApplication 在手机被锁定时停止事件循环

转载 作者:可可西里 更新时间:2023-11-01 18:38:29 24 4
gpt4 key购买 nike

我创建了一个重现该问题的简单程序。当我锁定手机,或者如果我切换到我的 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 停止事件循环?即使不在前台,我也需要我的应用程序来处理事件。

最佳答案

正如我在评论中提到的,我冒着被拒绝的风险为您创建了一个错误报告,但至少我们会从官方维护者那里得到反馈。

QGuiApplication "stops" when locking the phone or switching application.

它现在已被撤回,这很公平,因为正如维护者所说,您应该专注于创建一个服务而不是 Activity 。然而,目前还没有专门的 Qt API。

在 Activity 中这样做不是一个好主意的原因很简单,当应用程序进入“后台”时,它可能会被终止,甚至是立即终止。此外,它可能比用户预期的更早耗尽电池电量. 简而言之,这被维护者认为是错误而不是 5.2 中的功能,似乎已被修复。

在这里您可以找到一些关于如何创建服务的帮助:

Build background service with Qt on android

关于android - 当使用 Qt 5.3 或 Qt 5.4(但不是 Qt 5.2)编译时,QGuiApplication 在手机被锁定时停止事件循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27463772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com