在子线程中获得JNIEnv|AttachCurrentThread
2014-02-19 20:05
381 查看
JNI|在子线程中获得JNIEnv|AttachCurrentThread
http://blog.csdn.net/stefzeus/article/details/67925182011-09-21 14:00 5233人阅读 评论(2) 收藏 举报
jnithreadinterfacecallbackjvmnull
A JNI interface pointer (JNIEnv*) is passed as an argument for each native function mapped to a Java method, allowing for interaction with the JNI environment within the native method.This
JNI interface pointer can be stored, but remains valid only in the current thread. Other threads must first call AttachCurrentThread()to attach themselves to the VM and obtain
a JNI interface pointer. Once attached, a native thread works like a regular Java thread running within a native method. The native thread remains attached to the VM until it callsDetachCurrentThread() to detach itself.[3]
[cpp] view
plaincopy
void Call_Back_Invoke( void *user,int notify_id, unsigned int param )
{
bool isAttacked = false;
JNIEnv* env;
if(NULL == jni_tmpc.g_JVM)
{
LOGE("g_JVM == NULL");
return ;
}
int status = (jni_tmpc.g_JVM)->GetEnv((void **) &env, jni_tmpc.g_JNI_VERSION);
if(status < 0) {
LOGD("callback_handler:failed to get JNI environment assuming native thread");
status = jni_tmpc.g_JVM->AttachCurrentThread(&env, NULL);
if(status < 0) {
LOGE("callback_handler: failed to attach current thread");
return;
}
isAttacked = true;
}
switch( notify_id )
{
case...
...
}
if(isAttacked)
{
(jni_tmpc.g_JVM)->DetachCurrentThread();
}
LOGE("jni Call_Back_Invoke(1) notify_id = %d",notify_id );
}
相关文章推荐
- JNI|在子线程中获得JNIEnv|AttachCurrentThread
- JNI|在子线程中获得JNIEnv|AttachCurrentThread
- JNI|在子线程中获得JNIEnv|AttachCurrentThread
- AndroidJNI.AttachCurrentThread
- JNI - AttachCurrentThread
- (g_jvm)->AttachCurrentThread(&env, NULL) 后使用 (g_jvm)->DetachCurrentThread();程序报错
- android Jni AttachCurrentThread 内存泄露
- Bad JNI version passed to AttachCurrentThread:
- 获取当前线程相关的JNIENV对象。不线程相关的JNIENV可能会挂掉。
- jni调试(线程调试env变量问题)
- Java线程之this.currentThread().getName()和this.getName上的绕弯
- 调试程序 识别线程 用QThread::currentThread()方法
- 关于THREAD线程中CurrentCulture与CurrentUICulture的学习
- 使用DLL_THREAD_ATTACH阻止远程线程
- AttachCurrentThread
- 线程Thread调用时System.Web.HttpContext.Current为NULL
- Java 多线程 ---- 线程中this与 Thread.currentThread()线程的区别
- 关于THREAD线程中CurrentCulture与CurrentUICulture的学习
- 24.[个人]C++线程入门到进阶(24)----线程函数:GetCurrentThread
- JavaSE8基础 ThreadGroup getName 获得线程所在线程组的名字