我收到此错误JNI ERROR(APP错误):访问陈旧全球参考当我运行我的Android操作系统V4的应用程序,但是当我运行在Android的V2.3同一应用程序,我没有得到这个错误。
在其中我打电话的AsyncTask类的点,在那里我传递一个字符串数组作为参数时发生此错误
任何人都可以帮我吗?
我收到此错误JNI ERROR(APP错误):访问陈旧全球参考当我运行我的Android操作系统V4的应用程序,但是当我运行在Android的V2.3同一应用程序,我没有得到这个错误。
在其中我打电话的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)
当你调用与不正确的参数类型的方法会出现此错误。
此外,在这种情况下,你可能会注册从本机代码不同的Java代码的本地方法。 所不同的可能是你声明的Java代码和本地代码之间有更多或更少的参数。
JNI本地参考值的变化ICS