为什么我的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线程实例(std::thread
)的C++库。下面是我在库中处理线程的示例:
std::thread thread([context] () { ... });
thread.detach();
这个库在 iOS、OS X 和 Linux 上都没有出现这样的错误。我猜测这个错误不是因为缺少对 std::thread::detach
的调用。
不确定以下信息是否相关:
- 我使用
gnustl_static
- 该库通过 NDK 集成,但底层代码是平台无关的,因此我没有调用
JavaVM::AttachCurrentThread
或JavaVM::DetachCurrentThread
我不确定该怎么做或者该寻找什么。