繁体   English   中英

当线程退出时,为什么我的Android应用程序会崩溃?

[英]Why does my Android app crash when my threads exit?

当线程退出时,为什么我的Android应用程序会崩溃?

logcat当我的应用程序崩溃时,我看到以下输出。

D/dalvikvm: threadid=13: thread exiting, not yet detached (count=0)
D/dalvikvm: threadid=13: thread exiting, not yet detached (count=1)
E/dalvikvm: threadid=13: native thread exited without detaching
E/dalvikvm: VM aborting

我不确定是什么线程导致这个。 该应用程序使用带有几个STL线程实例的C ++库( std::thread )。 以下是我如何使用库中的线程的示例:

std::thread thread([context] () { ... });
thread.detach();

该库在iOS,OS X和Linux上没有任何此类错误。 我的猜测是错误不是因为缺少对std::thread::detach调用。

不确定它是否相关:

  • 我用gnustl_static
  • 库是通过NDK集成的,但是低级代码是独立于平台的,所以我没有调用JavaVM::AttachCurrentThreadJavaVM::DetachCurrentThread

我不知道该做什么或寻找什么。

好吧, 有些东西正在调用AttachCurrentThread 如果没有,VM将不知道线程是否退出。

必须首先将任何进行JNI调用的线程连接到VM。 一旦连接,它必须在退出之前分离以避免资源泄漏。

这篇文章有关于这种情况的更多信息, 这篇文章有一些额外的细节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM