마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 NDK 작업시 NewGlobalRef 사용 문의

0 추천
JNIEXPORT void JNICALL Java_com_test(JNIEnv *env, jobject obj, jlong t)

{

 

m_jobject = env->NewGlobalRef(obj);

 

}

 

 

사용하는 쪽 함수에서

 

jmethodID mid = env->GetMethodID(m_jClass, "setText", "(ILjava/lang/String;)V");

jobjectRefType t = env->GetObjectRefType(m_jobject);

 

LOGI("GetObjectRefType = %d", t);

env->CallVoidMethod(m_jobject, mid, i, text);

 

LOGI로 확인한 결과

 

JNIInvalidRefType    = 0

JNILocalRefType      = 1

JNIGlobalRefType     = 2

JNIWeakGlobalRefType = 3

 

return 값 2로 확인 되지만

CallVoidMethod 실행시 오류 발생으로 앱이 종료됩니다.

 

java_vm_ext.cc:594] JNI DETECTED ERROR IN APPLICATION: JNI ERROR (app bug): jobject is an invalid local reference: 0xb400006f41064991 (deleted reference at index 2047357516 in a table of size 0)

    java_vm_ext.cc:594]     in call to CallVoidMethodV

 

이렇게 뜨면서 종료됩니다.

분명 Global로 사용하도록 되어 있지만 jobject is an invalid local reference 이 오류가 발생하여 못 찾고 있습니다.

도움 부탁드립니다.

이런경우 어떤 문제인지요.
jjjjjjjiiiiiii (120 포인트) 님이 2023년 11월 22일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...