我对以下代码有一些疑问!我需要释放 mConnectEnv、s_jObj、jmethodConnect 吗?按照我在谷歌搜索的信息。我不需要发布 jmethodConnect,mConnectEnv 和 s_jObj 怎么样?所以我在发布j_ip的时候,使用了deleteLocalRef,我觉得这种方式是错误的!我应该使用 ReleaseStringUTF 方法吗?
static JNIEnv* mConnectEnv = 0;
static jobject s_jObj;
static jmethodID jmethodConnect;
.............(JNIEnv* env, jobject obj)
{
mConnectEnv = env;
jclass s_jclass = (jclass)(*mConnectEnv)->GetObjectClass(mConnectEnv, obj);
s_jObj = (*mConnectEnv)->NewGlobalRef(mConnectEnv, obj);
jmethodConnect = (*mConnectEnv)->GetMethodID(mConnectEnv, s_jclass , "Connect", "(Ljava/lang/String;I)Z");
..............
}
int OpenConnection(char* ip, int port)
{
LOG_INFO("OpenConnectionat jni layer");
jstring j_ip = (*mConnectEnv)->NewStringUTF(mConnectEnv, ip);
int result = (*mConnectEnv)->CallBooleanMethod(mConnectEnv, s_jObj, jmethodConnect, j_ip, port);
(*mConnectEnv)->DeleteLocalRef(mConnectEnv, j_ip);
return result;
}