Android JNI问题 最近遇到一个问题,就是当程序从C反调用JAVA,运行到s_vm->DetachCurrentThread();时异常退出。背景:我们是做了一个Anodroid利用了PhoneGap技术做的APP应用。其中通过画面JS调运PhoneGap,PhoneGap调用Java方法,再通过Java调用C++代码。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 骚年,没有attachCurrentThread( 就不需要DetachCurrentThread具体还是上代码吧 s_vm->AttachCurrentThread((JNIEnv**) &envCcallJ, (void*) &arg); jstring arg1 = (envCcallJ)->NewStringUTF(deviceId.c_str()); jstring desiredClassName = (envCcallJ)->NewStringUTF("ControllerStack"); jclass cls = envCcallJ->GetObjectClass(gCL); jmethodID mid = envCcallJ->GetMethodID(cls, "loadClass", "(Ljava/lang/String;)Ljava/lang/Class;"); jclass desiredClass = (jclass) envCcallJ->CallObjectMethod(gCL, mid, desiredClassName); jmethodID desiredMid = envCcallJ->GetStaticMethodID(desiredClass, "CcallJava_info", "(Ljava/lang/String;)V"); envCcallJ->CallStaticObjectMethod(desiredClass, desiredMid, arg1); envCcallJ->DeleteLocalRef(desiredClass); envCcallJ->DeleteLocalRef(cls); const char *pStr0 = envCcallJ->GetStringUTFChars(desiredClassName, 0); envCcallJ->ReleaseStringUTFChars(desiredClassName, pStr0); envCcallJ->DeleteLocalRef(desiredClassName); const char *pStr1 = envCcallJ->GetStringUTFChars(arg1, 0); envCcallJ->ReleaseStringUTFChars(arg1, pStr1); envCcallJ->DeleteLocalRef(arg1); s_vm->DetachCurrentThread(); 另外想问下,有 AttachCurrentThread一定要 DetachCurrentThread吗?看网上一些例子好像有些没有写DetachCurrentThread 给点log log Android 实例大集合 学习必备 请问,如何用JNI返回结构体,一次多个内容。 bitmap ARGB问题 ,求助 大家都来看一看,一个简单的调用问题! grid里面可以使用imageswittcher吗?加了后,进不了grid的activity. 程序报错,求高人。 Android读取SD卡图片显示慢的问题 计算器问题,怎么写退格键 使用Android模拟器,收发短信后logcat为何读取不到日志标签为SmsDispatcher或SmsMessage的消息 刚开始写安卓问个问题 界面滑动的问题,求大神们指导~~~~~~~ 关于在一个图片上根据坐标定位里面的商户
具体还是上代码吧
jstring arg1 = (envCcallJ)->NewStringUTF(deviceId.c_str());
jstring desiredClassName = (envCcallJ)->NewStringUTF("ControllerStack");
jclass cls = envCcallJ->GetObjectClass(gCL);
jmethodID mid = envCcallJ->GetMethodID(cls, "loadClass", "(Ljava/lang/String;)Ljava/lang/Class;"); jclass desiredClass = (jclass) envCcallJ->CallObjectMethod(gCL, mid, desiredClassName);
jmethodID desiredMid = envCcallJ->GetStaticMethodID(desiredClass, "CcallJava_info", "(Ljava/lang/String;)V");
envCcallJ->CallStaticObjectMethod(desiredClass, desiredMid, arg1); envCcallJ->DeleteLocalRef(desiredClass);
envCcallJ->DeleteLocalRef(cls);
const char *pStr0 = envCcallJ->GetStringUTFChars(desiredClassName, 0);
envCcallJ->ReleaseStringUTFChars(desiredClassName, pStr0);
envCcallJ->DeleteLocalRef(desiredClassName);
const char *pStr1 = envCcallJ->GetStringUTFChars(arg1, 0);
envCcallJ->ReleaseStringUTFChars(arg1, pStr1);
envCcallJ->DeleteLocalRef(arg1);
s_vm->DetachCurrentThread();
看网上一些例子好像有些没有写DetachCurrentThread