之前的JNI学习文章《JNI异常处理和缓存策略》中有介绍过全局变量,在本文中将派上用用场,直接使用。
本次实战主要是在C层开辟子线程,然后通过访问java类,获取得到UUID,并且打印出来。
具体步骤:
1、创建一个NDK项目,编写native方法
NDKTest.java
public class NDKTest {
public native static String getStrFromJNI();//测试
public native void pthread();
public native void init();
public native void destroy();
static {
System.loadLibrary("myndk");
}
}
复制代码
init也就是初始化,主要是获取class,通过class获取jmethodID等操作。
pthread:创建线程,访问类的方法。
destroy:释放资源
2、编写方法获取UUID
public class UUIDUtils {
public static String get(){
return UUID.randomUUID().toString();
}
}
复制代码
3、通过javah获得头文件com_example_ndkfile_NDKTest.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include
/* Header for class com_example_ndkfile_NDKTest */
#ifndef _Included_com_example_ndkfile_NDKTest
#define _Included_com_example_ndkfile_NDKTest
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_example_ndkfile_NDKTest
* Method: getStrFromJNI
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_co