我有一個Android應用程序,它由一些本地線程(不附加到JVM)組成,它需要能夠調用Java對象的方法。本地多線程和JNI
我打算這樣做的方式是創建一個JNI函數,我從相關的Java對象中調用它,它允許我獲取並緩存所需的java對象方法ID,JNIEnv和對象引用的靜態本機數據結構,以便我的本地線程可以(線程安全地)訪問所需的方法(例如使用(* env) - > CallVoidMethod(env,this,JavaMethodID,...)等;
我不相信方法是行得通的,因爲我讀過JNIEnv指針不能在線程之間共享,只有連接到JVM的線程才能做這種事情......
這是一種可行的方法嗎?
'JNIEnv'只適用於當前線程,但'JavaVM'是全球性的。所以,保存一個指向它的指針,以及對你的類,對象,方法ID的全局引用,這將起作用。 –
http://developer.android.com/training/articles/perf-jni.html – fadden