我收到这个错误 JNI 错误(应用程序错误):访问过时的全局引用当我在 Android OS v4 中运行我的应用程序时,但是当我在 Android v2.3 中运行相同的应用程序时,我没有收到此错误。 p>
这个错误发生在我调用 AsyncTask 类时,我将一个字符串数组作为参数传递
谁能帮帮我??
最佳答案
当您使用不正确的参数类型调用方法时会发生此错误。
确保您的方法签名与您传递的内容完全匹配。对于字符串数组:
jmethodID mid = env->GetMethodID(cls, methodName, "([Ljava/lang/String;)V");
如果你自己创建它,它看起来像这样:
jclass stringCls = env->FindClass("java/lang/String");
jobjectArray mStringArray = env->NewObjectArray( mSize, stringCls, NULL);
在您的特定情况下,您很可能不会在 Android 2.3 上看到崩溃,因为您正在调用 AsyncTask.execute() 直到 API 11(Android 3.0)才可用并且您的 jmethodID 为空。 (获取 jclass 和 jmethodID 后始终检查它们是否为 null 是个好主意)
关于android - 错误 : JNI ERROR (app bug): accessed stale global reference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12071585/