У меня была проблема с тем, что WeakGlobalRef указал на собранный мусор объект, это разбитое приложение, когда я пытаюсь вызвать CallVoidMethod в этом ref. Чтобы исправить это, я следующее:JNI LocalRef от WeakGlobalRef
jobject javaObject = pEnv->NewLocalRef(m_pJavaObject);
if (javaObject)
{
pEnv->CallVoidMethod(javaObject, method, object);
}
Это еще сбой в CallVoidMethod, это действует, чтобы сделать это так, или я должен также сделать проверку на местном исх IsSameObject
Последняя вещь, я получаю на свалку, выше ничего, что может указывать любой метод:
Crash reason: SIGSEGV
Crash address: 0xdead4321
Process uptime: not available
Thread 0 (crashed)
(...)
41 libart.so + 0xba7df
sp = 0xbeed2dc0 pc = 0xb4eca7e1
Found by: stack scanning
42 libxxx.so!_JNIEnv::CallVoidMethod(_jobject*, _jmethodID*, ...) [jni.h : 650 + 0x1]
sp = 0xbeed2dd8 pc = 0x9fabbeb9
Found by: stack scanning
_ «Это все еще сбой при вызове CallVoidMethod» _ Тогда вы, вероятно, должны добавить сообщение об ошибке/stacktrace в свой вопрос. – Michael
@ Майкл Я добавил часть стека и ошибку –