void threadFunc(){
JNIEnv *menv;
int ret;
ret = javaVm->AttachCurrentThread(&menv, NULL);
if (ret != JNI_OK){
LOGE("threadFunc AttachCurrentThread failed\n");
return ;
}
jclass jclass1 = menv->GetObjectClass(j_obj1);
jmethodID jmethodId = menv->GetMethodID(jclass1, "showToast", "()V");
menv->CallVoidMethod(j_obj1, jmethodId);
javaVm->DetachCurrentThread();
}
extern "C"
JNIEXPORT void JNICALL
Java_com_example_jni1_MainActivity_CreateThread(JNIEnv *env, jobject thiz) {
// TODO: implement CreateThread()
int ret;
pthread_t pid;
ret = env->GetJavaVM(&javaVm);
if (ret != JNI_OK){
LOGE("get java vm failed");
return;
}
j_obj1 = env->NewGlobalRef(thiz);
pthread_create(&pid, 0, reinterpret_cast<void *(*)(void *)>(&threadFunc), j_obj1);
}
jni中创建线程,调用activity 弹出toast