2

私はクラッシュに直面しています

JNI WARNING : 0x44f81e80 is not a valid JNI reference, in Ldalvik/system/NativeStart;. run()v (GetObjectClass)

NewGlobalRef の代わりに NewWeakGlobalRef を使用するという投稿を見つけました。しかし、コードで検証を探しています。私が知りたいのは、指定された参照が有効JNIかどうかを確認できる APIがあるかどうかだけです。無印みたいなものjobjectJNI

char isValid = (env)IsValidJNIRef(myjobject);

その isValid の値を使用して、システムを処理するための条件を設定できます。

ありがとう。

4

1 に答える 1

1

以下を使用して、obj 引数によって参照されるジョブジェクトの ref タイプを確認できます。

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

于 2013-04-15T21:50:15.367 に答える