3个版本
0.1.2 | 2021年10月24日 |
---|---|
0.1.1 | 2021年10月23日 |
0.1.0 | 2021年10月23日 |
#57 in #jni
用于 mediacodec
6KB
82 行
JavaVM
一个简单的crate,全局缓存JavaVM结构,并为任何线程返回有效的JNIEnv,提供自动线程附加和分离。
有关更多详细信息,请参阅crate文档。
lib.rs
:
这个crate帮助“存储”和“检索”当前Java虚拟机(JVM)以安全的方式,并提供帮助您获取当前线程上JNIEnv的例程。这样,您只需设置一次JVM,当您需要时再请求所需的JNIEnv。附加和从JavaVM分离应留给库,这可不是您的事情 :) 注意,在您使用此库中的函数之前,必须先设置一次JavaVM。不这样做将使您的程序崩溃!
示例
javavm::set_jvm(None); // Pass a valid JavaVM instance here (hint: use the jni crate, which this crate already depends on)
// ... Other code goes here
let handle = std::thread::spawn(|| {
// When you need the JNIEnv
let _ = javavm::get_env();
});
依赖项
~1.4–2.7MB
~46K SLoC