Android NDK C++ 子线程 调用java方法生成UUID
前言
众所周知c++代码生成UUID非常不方便,本章在讲解调用java代码的同时,也会讲解子线程在使用Env时需要注意的几个经常容易犯错误的点儿,如果你还对NDK中的多线程不了解,可以阅读上一篇文章Android NDK C++中的多线程
知识点
- NDK中每个线程都有自己独立的JNIEnv
- JavaVM 代表的是Java虚拟机,所有的工作都是从JavaVM开始,可以通过JavaVM获取到每个线程关联的JNIEnv
- 如何获取JavaVM? 1.在JNI_OnLoad函数中获取 2.(*env)->GetJavaVM(env,&javaVM);
- 获取java层的Object时,最好在主线程,子线程有时候获取不到
效果图
关键代码
#include <jni.h>
#include <string>
#include <pthread.h>
#include <android/log.h>
#include <unistd.h>
#define LOGI(FORMAT, ...) __android_log_print(ANDROID_LOG_INFO,"song",FORMAT,##__VA_ARGS__);