当前位置:编程学习 > wap >>

Android JNI问题

最近遇到一个问题,就是当程序从C反调用JAVA,运行到s_vm->DetachCurrentThread();时异常退出。

背景:

我们是做了一个Anodroid利用了PhoneGap技术做的APP应用。

其中通过画面JS调运PhoneGap,PhoneGap调用Java方法,再通过Java调用C++代码。 --------------------编程问答-------------------- 骚年,没有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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,