1 #include "jni_object.h"
4 #define LOG_TAG "TM_JObject"
6 JObject::JObject(JNIEnv *env) :
7 m_pEnv(env), m_pObject(NULL), m_pClazz(NULL), m_fIsNewObject(true) {
10 JObject::JObject(JNIEnv *env, jobject obj) :
11 m_pEnv(NULL), m_pObject(NULL), m_pClazz(NULL), m_fIsNewObject(false) {
12 if (NULL == env || NULL == obj) {
18 m_pClazz = m_pEnv->GetObjectClass(obj);
21 JObject::JObject(JNIEnv *env, const char *classPath) :
22 m_pEnv(NULL), m_pObject(NULL), m_pClazz(NULL), m_fIsNewObject(true) {
23 if (NULL == env || NULL == classPath) {
24 LOGI("JObject Invalid parameters");
29 //m_pClazz = GetJClass( classPath );
31 if (NULL == m_pClazz) {
32 LOGE("GetJClass failed [%s]", classPath);
36 jmethodID mid = env->GetMethodID(m_pClazz, "<init>", "()V");
38 LOGE("GetMethodID failed [%s]", classPath);
42 m_pObject = env->NewObject(m_pClazz, mid);
47 if (m_pObject && m_fIsNewObject) {
48 m_pEnv->DeleteLocalRef(m_pObject);
51 if (m_pClazz && !m_fIsNewObject) {
52 m_pEnv->DeleteLocalRef(m_pClazz);
57 jobject JObject::getObject() const {
61 void JObject::detachObject() {
63 m_fIsNewObject = false;