JNIEXPORT jint JNICALL Java_xxxxx_xx
  (JNIEnv *env, jobject thiz, jint cn,jobject obj)
实现在其它线程中用调用  JNIEnv *env  \  jobject  obj  两个参数 . 谢谢 先 
 

解决方案 »

  1.   

    JNIEnv* 在其他线程中必须再次获得,线程提出后必须释放,否则程序会报错挂掉。这个是android系统强制的。在普通的台式机上没这种现象
    obj必须new一个Global的Ref出来,然后全局共享之,这样其他线程就能用了。程序退出前要释放这个。
    看来你没怎么用过JNI,建议下载一本JNI的资料,是JAVA公司出的,专门讲解JNI的知识,我就是看那个知道的。
      

  2.   

    AttachCurrentThread
    DetachCurrentThreadlz可以查阅下jni这两个函数的使用方法,一个是把jvm加载到当前线程,一个是把jvm从当前线程剥离
    另外要注意一个jobject如果要跨线程的话,需要申请为全局引用,NewGlobalRef函数
      

  3.   

    额,还有就是,android的ReferenceTable比一般JNI应用的要小,只有512个,如果不注意清理的话很有可能因为ReferenceTable溢出而程序崩掉
    所以当这个GlobalRef不再使用时,要用DeleteGlobalRef把这个GlobalRef清除掉,LocalRef也是一样的
      

  4.   

    not unsderstand what you say