错误:JNI错误(app bug):访问陈旧的全局引用

Sur*_*089 15 mono android monodevelop xamarin.android xamarin

我收到此错误 JNI ERROR(应用程序错误):访问陈旧的全局引用当我在Android OS v4中运行我的应用程序时,但是当我在Android v2.3中运行相同的应用程序时,我没有收到此错误.

这个错误发生在我调用AsyncTask类的地方,我将字符串数组作为参数传递

任何人都可以帮助我?

Kry*_*ski 14

调用参数类型不正确的方法时会发生此错误.

确保您的方法签名与您传递的内容完全匹配.对于字符串数组:

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

如果你自己创建它,它看起来像这样:

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

在特定情况下,你最有可能没有看到在Android 2.3的崩溃,因为你在呼唤AsyncTask.execute(),它是不可用,直到API 11(Android 3.0的),你的jmethodID为空.(在获取它们之后总是检查jclass和jmethodID为null是个好主意)