我最近开始使用我的 Android JNI 应用程序以 API 级别 14 为目标,并立即发现了此处描述的问题。
未能通过显式管理本地引用来解决问题(在我的实验结束时出现本地引用表溢出),我决定简单地切换到全局引用。现在,我遇到了该文章中未描述的“尝试使用过时的全局引用”问题。
这就是我想要做的:有一个对象有一个jobject
s 的容器。每当 Java 调用我的本机方法并传递我需要存储以供以后使用的引用时,我都会为其创建新的全局引用jobject
,将全局引用添加到容器并存储其索引。每当我需要使用时,jobject
我都会通过索引来获取它。这种方法有什么问题?
PS 每当我调用 JNI 方法时,我都会JNIEnv
对调用线程使用正确的方法。进行 JNI 调用的线程附加到 JVM。