Java は JS を呼び出し、JS は JAVA を呼び出します

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 の考えられる原因:

  1. インスタンス化されていない変数が Java コードに含まれている可能性があるため、最初に Java コードを確認してください。
  2. パーミッションの問題である可能性もあります。AndroidMainfest.xml に次のパーミッションを追加してみてください。
    <uses-permission android:name="android.permission.INTERNET"/>
  1. java が js を呼び出すと、エンジンが初期化されない場合があります。このエラーを解決する方法は、エンジンがjs コードで初期化されていることを確認することです(数秒の遅延など):最初に js を使用して java を呼び出し、次に java を使用して js を呼び出します。これにより、エラーが回避されます。

Java と JS 間の相互呼び出しの詳細を添付:リンク

おすすめ

転載: blog.csdn.net/qq_28644183/article/details/125263231