1:AndroidJNI.AttachCurrentThread 附加当前线程
转自:http://game.ceeger.com/Script/AndroidJNI/AndroidJNI.AttachCurrentThread.html
static function AttachCurrentThread () : int
Description描述
Attaches the current thread to a Java (Dalvik) VM.
附加当前线程到一个Java(Dalvik)虚拟机。
A thread must be attached to the VM before any other JNI calls can be made.
一个线程必须附加到虚拟机,在任何其他JNI可调用之前。
Returns 0 on success; returns a negative number on failure.
成功返回0,失败返回一个负数。
2.JNI|在子线程中获得JNIEnv|AttachCurrentThread
转自:http://blog.csdn.net/stefzeus/article/details/6792518
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 );
}