Если я прокомментирую метод (* a) -> CallVoidMethod (a, b, meth, "FROM JNI"); Приложение не терпит крах, иначе оно сработает.Ресурс был получен при подключенной трассировке стека, но не был выпущен. утечка памяти
Предполагая, что я не выпустил ресурс «jstr», который мог вызвать утечку памяти, тогда почему это происходит только тогда, когда CallVoidMethod()?
Что мне делать для решения этой проблемы? Спасибо всем, кто тратит свое время на написание вниз решение или чтение через эту
ОШИБКА:
android.process.acore E/StrictMode﹕ A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
java.lang.Throwable: Explicit termination method 'close' not called
Это мой родной «C» код ...
#include "com_example_prabhu_helloworldnative_HelloWorld.h"
#include <jni.h>
#include <android/log.h>
#define LOG_TAG "testjni"
#define ALOG(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
JNIEXPORT jstring JNICALL Java_com_example_prabhu_helloworldnative_HelloWorld_HelloJNI(JNIEnv *a, jobject b)
{
//jstring jstr = (*a)->NewStringUTF(a, "This comes from jni....");
jclass clazz =(*a)->GetObjectClass(a, b);
jmethodID meth = (*a)->GetMethodID(a, b, "messageMe", "(Ljava/lang/String;)V");
__android_log_print(ANDROID_LOG_DEBUG, "LOG_TAG", "\n this is log messge \n");
ALOG("Hello World");
if(meth == 0)
{
return;
}
(*a)->CallVoidMethod(a, b, meth, "FROM JNI");
//(*a)->Release
ALOG("REACHING HERE");
return (*a)->NewStringUTF(a, "APXOR");
}
ВЫ РЕШАЛИ МОЮ ПРОБЛЕМУ :) –