JAVA 调用 JS
//Java端
//带参数的函数调用
final String exes = "cc.Global.setEcADVal('"+ var1 + "')";
//必须在GL线程中进行
Cocos2dxHelper.runOnGLThread(new Runnable() {
@Override
public void run() {
//注意这里构造了带参数的函数
Cocos2dxJavascriptJavaBridge.evalString(exes);
}
});
//js端
setEcADVal(jsonVal) {
}
JS 调用 Java
//js端
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/Test", "hello","(Z)V", true)});
//java端
public static void Test(boolean isVisibility) {
}
android.os.DeadObjectException 可能产生的原因:
- 有可能是java代码中存在未实例的变量,所以先检查下java代码。
- 也有可能是权限的问题,尝试在AndroidMainfest.xml中添加如下权限:
<uses-permission android:name="android.permission.INTERNET"/>
- java调用js时,可能引擎未完成初始化。解决这个错误的方法是在js代码中确认引擎已经初始化完成(比如延迟个几秒)的时候:先使用js调用java,再使用java调用js。这样就会避免错误的产生。
附上Java和JS互相调用的详细内容: link