首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QT应用程序在Android 10设备上的std::线程的析构函数处崩溃。

QT应用程序在Android 10设备上的std::线程的析构函数处崩溃。
EN

Stack Overflow用户
提问于 2020-04-20 11:52:11
回答 1查看 3.3K关注 0票数 7

我的应用程序在Android 10设备上崩溃,其调用堆栈如下:

代码语言:javascript
复制
backtrace:
#00  pc 000000000006f06c  /apex/com.android.runtime/lib64/bionic/libc.so (abort+160)
#01  pc 00000000000500fc  /system/lib64/libc++.so (abort_message+232)
#02  pc 0000000000050218  /system/lib64/libc++.so (demangling_terminate_handler()+44)
#03  pc 00000000000646c4  /system/lib64/libc++.so (std::__terminate(void (*)())+12)
#04  pc 000000000006466c  /system/lib64/libc++.so (std::terminate()+52)
#05  pc 00000000000bb150  /system/lib64/libc++.so (std::__1::thread::~thread()+20)
#06  pc 00000000000d0f48  /apex/com.android.runtime/lib64/bionic/libc.so (__cxa_finalize+212)
#07  pc 00000000000cc930  /apex/com.android.runtime/lib64/bionic/libc.so (exit+24)
#08  pc 0000000000032f30  /data/app/com.domain.myapp-Rs_sm5VrLR1Jj8QW6oYByA==/lib/arm64/libplugins_platforms_qtforandroid_arm64-v8a.so

我不知道何时以及为什么会发生这种情况,因为我无法在我的设备和仿真器上再现这种情况,但是这种情况只发生在用户端,而且只发生在Android 10上(而不是在以前的安卓版本上)。

我的QT版本是5.14.2。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-06 08:59:25

我们刚刚发布了我们的一个游戏的更新,它似乎是修复了崩溃。这就是我们所做的: Android 10和Android 9在使用Android按钮时显示了不同的默认行为。在Android 10上,应用程序关闭,但在控制台输出中,我看到该应用程序在真正退出之前,在循环中停留了大约5秒。这并不发生在Android 9上。当我点击back按钮,应用程序关闭时,我在Android 10设备上获得了这个输出:

代码语言:javascript
复制
....
05-04 18:26:21.315 26882 26908 I nkeycat.tendow:
I nkeycat.tendow: QarthPatchMonintor::CheckNotifyEvent
05-04 18:26:21.315 26882 26908 I nkeycat.tendow:
I nkeycat.tendow: QarthPatchMonintor::CheckNotifyEvent before read
05-04 18:26:21.315 26882 26908 I nkeycat.tendow:
I nkeycat.tendow: QarthPatchMonintor::CheckNotifyEvent after read, length = -1
05-04 18:26:21.315 26882 26908 I nkeycat.tendow:
I nkeycat.tendow: QarthPatchMonintor::CheckNotifyEvent
05-04 18:26:21.315 26882 26908 I
...

现在,我在QML中随处可见Android按钮,当用户真正想退出应用程序时,我调用以下自定义Java函数优雅地退出:

代码语言:javascript
复制
public String quitApp() { // Qt C++ call

    try {
        finishAffinity();
        System.exit(0);

    } catch (Exception exc) {
        exc.printStackTrace();
        logException(exc);
    }
    return "";
}

我们还实施了戴维·赫斯的建议。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61321845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档