Android JNI问题

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

背景:

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

其中通过画面JS调运PhoneGap,PhoneGap调用Java方法,再通过Java调用C++代码。
...全文
80 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
panzhiyang 2013-08-30
  • 打赏
  • 举报
回复
另外想问下,有 AttachCurrentThread一定要 DetachCurrentThread吗? 看网上一些例子好像有些没有写DetachCurrentThread
panzhiyang 2013-08-30
  • 打赏
  • 举报
回复
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();
guzhijie1981 2013-08-30
  • 打赏
  • 举报
回复
骚年,没有attachCurrentThread( 就不需要DetachCurrentThread 具体还是上代码吧
guzhijie1981 2013-08-30
  • 打赏
  • 举报
回复
给点log log
guzhijie1981 2013-08-30
  • 打赏
  • 举报
回复
你不用线程就不用,我看你没有开启线程,为什么要用呢

80,359

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧