[JNI] C call Java之后Java call C之后无法更新界面

用cocos2d提供的JniHelper。
test.cpp:
JniMethodInfo mi;
//启动时,由Lua调用此函数
void testJNI(){
if(JniHelper::getStaticMethodInfo(mi, “com/xxx/Cls”, “testJNI”, “(Ljava/lang/String;)V”)){
jstring str = mi.env->NewStringUTF(“TEST”);
mi.env->CallStaticVoidMethod(mi.classID, mi.methodID, str);
mi.env->DeleteLocalRef(str);
mi.env->DeleteLocalRef(mi.classID);
}
}
void Java_com_xxx_Cls_callCPP(JNIEnv *env, jobject obj){
//经测试,确实可以运行到这里,曾调用过另一个java方法,输出一段字符串
//之后调用某Lua函数,无法更新界面
}

com/xxx/Cls.java:
static native void callCPP();
static void testJNI(String s){
System.out.println(s); //如果加上这行会退出,但人输出s.length()却可以。
System.out.println(“Called testJNI”); //这行能看到。
callCPP();
}

楼主是想说java调用c++的代码 cocos2d界面没有效果么,我想应该是因为cocos2d-x只允许在主线程绘制界面,楼主可以试试调用一个scheul函数在下一帧再调用绘制界面函数

今天已经解决这问题,不是主线程绘制界面的问题,是lua->C的部分,C取参数时写错了一个数,传给java的就只是0了。
在主线程绘制界面不会无效,而是会出错,修改LabelTTF的话,那一片会变黑。
java->c可以用Cocos2dxActivity提供的runOnGLThread,无需等待。

好多细节需要注意啊。

楼主是想说java调用c++的代码 cocos2d界面没有效果么,我想应该是因为cocos2d-x只允许在主线程绘制界面,楼主可以试试调用一个scheul函数在下一帧再调用绘制界面函数