2012-07-17 71 views
3

我想在pthread函數中調用java方法。如何從pthread(C)在Android NDK中調用回調(JAVA)

但我面對:

JNI_ERROR: non-VM thread making JNI calls 

我該怎麼辦?

+0

這也許可以幫助:https://groups.google.com/forum/?fromgroups#!topic/android-ndk/FfQlfrKwwtw – 0gravity 2012-07-17 04:16:39

+0

謝謝,但我認爲該鏈接ISN」我想要什麼。 – Joel 2012-07-17 04:43:08

回答

2

問題是您的線程未附加(或不正確)到虛擬機。 當您通過JNI橋從Java調用C++時,您的調用正在工作的pthread被附加到vm。 通過JNI調用C++中的線程可以說是不穩定的。 你可能做了什麼就是創建一個新線程,並嘗試在撥打電話之前從它撥打電話,而無需將其附加到VM。 我認爲要解決您的問題,您應該將您的線程附加到虛擬機。

所以,如果你看到Android Tips and tricks有關於這個問題 一節。如果你去螺紋部分,你可以看到部分,他們清楚地說:

直到螺紋連接,它有沒有JNIEnv,並且不能使JNI 調用。

您可以在提供的鏈接中找到解決問題的詳細步驟。

發佈你的進步...

+1

謝謝,我打算去做。併發布我的進度。 – Joel 2012-07-18 01:19:01