c++ 子线程里面调用 Android 代码
来源:互联网 发布:ios更新后数据还在吗 编辑:程序博客网 时间:2024/05/16 04:48
c++ 子线程里面调用 Android 代码
本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦:
- “抄袭“地址:http://adamish.com/blog/archives/327
我写的时候发现原来作者的代码有点小问题,稍稍修改了下
代码块
代码块语法遵循标准markdown代码,例如:
package com.adamish;public class Foo { public native void register(); public void callback(int val) { // do stuff }}
// cached refs for later callbacksJavaVM * g_vm;jobject g_obj;jmethodID g_mid;JNIEXPORT jboolean JNICALL Java_com_adamish_Foo_register (JNIEnv * env, jobject obj, jlong hwnd) { bool returnValue = true; // convert local to global reference // (local will die after this method call) env->GetJavaVM(&g_vm); g_obj = env->NewGlobalRef(obj); // save refs for callback jclass g_clazz = env->GetObjectClass(g_obj); if (g_clazz == NULL) { std::cout << "Failed to find class" << std::endl; } g_mid = env->GetMethodID(g_clazz, "callback", "(I)V"); if (g_mid == NULL) { std::cout << "Unable to get method ref" << std::endl; } return (jboolean)returnValue;}
void callback(int val) { JNIEnv * g_env; // double check its all ok int getEnvStat = g_vm->GetEnv((void **)&g_env, JNI_VERSION_1_6); if (getEnvStat == JNI_EDETACHED) { std::cout << "GetEnv: not attached" << std::endl; if(g_vm->AttachCurrentThread(&g_env,NULL)!=0){ std::cout << "Failed to attach" << std::endl; } } else if (getEnvStat == JNI_OK) { // } else if (getEnvStat == JNI_EVERSION) { std::cout << "GetEnv: version not supported" << std::endl; } g_env->CallVoidMethod(g_obj, g_mid, val); if (g_env->ExceptionCheck()) { g_env->ExceptionDescribe(); } g_vm->DetachCurrentThread();}
阅读全文
0 0
- c++ 子线程里面调用 Android 代码
- Android代码里Toast如何在子线程中调用
- Android NDK: 子线程中C调用Java
- Android NDK: 子线程中C调用Java
- gfortran里面调用c语言的代码
- 在<c:foreach 里面调用js代码
- Android子线程更改UI代码
- cocos2dx调用android代码,android调用c
- NDK:android调用c代码
- android 编译调用C代码
- Android在Adapter里面调用Activity或者fragment里面的的方法/变量代码
- android上子线程中调用GPS功能
- Android中Toast如何在子线程中调用
- Android中Toast如何在子线程中调用
- Android中Toast如何在子线程中调用
- Android 在子线程更新UI(调用系统方法)
- 在子线程里面使用Toast
- Android 通过handler和message在子线程里面去更新UI
- 浅谈CSS3文本超出长度显示省略号
- jQuery选择器,匹配某个包含有特殊内容的下一个元素
- 实现JDK动态代理和cglib动态代理
- java.sql.SQLException: Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=186646784)(ERR=12505)(ERR
- wex5插件追加下载文件预览文件微信微博QQ分享
- c++ 子线程里面调用 Android 代码
- multiply函数实例
- 程序员编程生涯中会犯的7个错误
- http-server轻量级文件服务器
- 字符串替换(StringBuffer)
- 使用maven构建后端的一些问题
- How to flash image by fastboot
- CF_850B Arpa and a list of numbers
- 从零开始学Scala系列(一)之环境安装及IDE选择安装