jni 線程內反調java方法,訪問java對象

jni 線程內反調java方法
在c的線程中反向訪問java的對象
在做項目的時候遇到這樣一個問題:
在c中的線程中,通過
jclass managerCls = (*env)->FindClass(env, “com/test/fact/Manager”);
總是會崩潰,後來發現不能在線程中去Find class(但是可以訪問到系統的類, 比如說String 類)
解決方案:
需要在主線程中初始化:
jclass managerCls = (*env)->FindClass(env, “com/test/fact/Manager”);
之後將managerCls 創建出來全局引用
devmgr_cls = (*jni_env)->NewGlobalRef(jni_env, managerCls);
之後在線程中用devmgr_cls即可
當線程退出勿忘將全局引用delet掉
(*jni_env)->DeleteGlobalRef(jni_env, devmgr_cls);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章