2012-08-22 14 views
14

Viene visualizzato questo errore ERRORE JNI (bug dell'app): accesso al riferimento globale stante Quando si esegue la mia app nel sistema operativo Android v4, Ma quando eseguo il stessa applicazione in Android v2.3 Non ho questo errore.Errore: JNA ERRORE (errore app): accesso al riferimento globale stante

Questo errore si verifica nel momento in cui io chiamo classe AsyncTask, dove passo davanti a un array di stringhe come argomento

Qualcuno mi potrebbe aiutare ??

+2

Mi ricordo di aver letto in [comunicato stampa di Google per gli sviluppatori] (http://android-developers.blogspot.ie/2011/11/jni-local-reference-changes-in-ics.html) che ICS avrà una verifica più severa di possibili bug multi-thread, forse ti sei imbattuto in quello? – skolima

risposta

14

Questo errore si verifica quando si chiama un metodo con un tipo di parametro errato.

Assicurarsi che la firma del metodo corrisponda esattamente a ciò che si sta passando. Per un array di stringhe:

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

Se si sta creando da soli, sarebbe simile a questa:

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

Nel vostro caso specifico, si hanno più probabilità non vedendo l'incidente su Android 2.3, perché stai chiamando AsyncTask.execute() che non era disponibile fino all'API 11 (Android 3.0) e il tuo jmethodID è nullo. (È consigliabile controllare sempre jclass e jmethodID per null dopo averli ricevuti)

+0

Solo per riferimento futuro ho errato 'jlong' con' long', che ha causato lo stesso errore – ZdaR

2

Questo errore si verifica quando si chiama un metodo con un tipo di parametro errato.

In aggiunta, in questo caso è possibile registrare il metodo nativo su codice Java diverso dal codice nativo. La differenza può essere la dichiarazione di più o meno parametri tra il codice Java e il codice nativo.

1
+0

@Crossle ... compagno im nuovo ad Android e di fronte allo stesso problema http://stackoverflow.com/questions/21423036/sqlite3- exception-database-disk-image-is-malformed pls spiega come posso implementare il tuo codice .. io lo correggo dalle ultime 3 settimane :( – Gattsu