android jni 全局变量,JNI多线程与全局引用

本文介绍了如何在C层使用JNI创建子线程并访问Java类获取UUID。通过创建全局引用,实现在多线程中调用Java方法。详细步骤包括创建NDK项目、编写JNI方法、获取UUID、创建线程、初始化和销毁全局引用。在Android应用中,需在onCreate调用init,在onDestroy调用destroy,以确保线程安全和资源释放。
摘要由CSDN通过智能技术生成

之前的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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值