我正面临崩溃
JNI WARNING : 0x44f81e80 is not a valid JNI reference, in Ldalvik/system/NativeStart;. run()v (GetObjectClass)
我发现一些帖子说使用NewWeakGlobalRef而不是NewGlobalRef。但我正在寻找代码中的验证。我想知道的是,是否有任何JNI
api,我可以检查给定的jobject
是否有效JNI
引用?像未签名的东西
char isValid = (env)IsValidJNIRef(myjobject);
使用isValid的值我可以设置一些条件来处理系统。
感谢。
答案 0 :(得分:1)
您可以使用以下命令检查obj参数引用的作业的引用类型:
jobjectRefType GetObjectRefType(JNIEnv* env, jobject obj);
返回以下枚举值之一,定义为jobjectRefType
:
JNIInvalidRefType = 0,
JNILocalRefType = 1,
JNIGlobalRefType = 2,
JNIWeakGlobalRefType = 3
请注意,您不能在已删除的参考号上使用此功能 - 未指定GetObjectRefType
将为已删除的参考号返回的值。
请参阅:http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html#objreftype