15

Android OS v4 でアプリを実行すると、このエラー JNI ERROR (app bug):accessed stale global referenceが発生しますが、Android v2.3 で同じアプリケーションを実行すると、このエラーは発生しません。

このエラーは、文字列配列を引数として渡す AsyncTask クラスを呼び出した時点で発生します。

誰でも私を助けることができますか??

4

4 に答える 4

15

このエラーは、パラメーターの型が正しくないメソッドを呼び出すと発生します。

メソッドの署名が、渡すものと正確に一致していることを確認してください。文字列配列の場合:

jmethodID mid = env->GetMethodID(cls, methodName, "([Ljava/lang/String;)V");

自分で作成する場合は、次のようになります。

jclass stringCls = env->FindClass("java/lang/String");
jobjectArray mStringArray = env->NewObjectArray( mSize, stringCls, NULL);

特定のケースでは、API 11 (Android 3.0) まで利用できなかった AsyncTask.execute() を呼び出しており、jmethodID が null であるため、Android 2.3 でクラッシュが発生する可能性はほとんどありません。(取得後、常に jclass と jmethodID の null をチェックすることをお勧めします)

于 2013-01-10T04:35:38.863 に答える
3

このエラーは、パラメーターの型が正しくないメソッドを呼び出すと発生します。

さらに、この場合、ネイティブ コードとは異なる Java コードにネイティブ メソッドを登録している可能性があります。違いは、Java コードとネイティブ コードの間で宣言するパラメーターの数が多いか少ないかです。

于 2013-04-19T05:11:26.793 に答える
1

ICS での JNI ローカル参照の変更

于 2013-07-19T10:14:58.413 に答える