Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error: JNI ERROR (app bug): accessed stale global reference

I am getting this error JNI ERROR (app bug): accessed stale global reference When I run my app in Android OS v4, But when I run the same application in Android v2.3 I don't get this error.

This error occurs at the point where I call AsyncTask class, where I pass a string array as argument

Could Anyone Help me??

like image 612
Surya2089 Avatar asked Aug 22 '12 10:08

Surya2089


3 Answers

This error occurs when you call a method with an incorrect parameter type.

Make sure your method signature matches exactly what you are passing. For a string array:

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

If you are creating it yourself, it would look something like this:

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

In your specific case, you are most likely not seeing the crash on Android 2.3 because you are calling AsyncTask.execute() which wasn't available until API 11 (Android 3.0) and your jmethodID is null. (It's a good idea to always check jclass and jmethodID for null after getting them)

like image 133
Krys Jurgowski Avatar answered Nov 20 '22 14:11

Krys Jurgowski


This error occurs when you call a method with an incorrect parameter type.

Addition, in this case you may be register the native method on Java code different from the native code. The difference can be you declare more or less parameters between the Java code and native code.

like image 37
Thuan Bui Avatar answered Nov 20 '22 12:11

Thuan Bui


JNI Local Reference Changes in ICS

like image 1
Crossle Song Avatar answered Nov 20 '22 14:11

Crossle Song