@@ -75,6 +75,8 @@ class JNIMMKVHandler : public mmkv::MMKVHandler {
7575 } else {
7676 mmkv::mmkvLog (level, file, line, function, message);
7777 }
78+ } else {
79+ mmkv::mmkvLog (level, file, line, function, message);
7880 }
7981 }
8082
@@ -107,6 +109,9 @@ class JNIMMKVHandler : public mmkv::MMKVHandler {
107109 }
108110
109111 void onContentChangedByOuterProcess (const std::string &mmapID) override {
112+ if (!m_wantsContentChange) {
113+ return ;
114+ }
110115 auto currentEnv = getCurrentEnv ();
111116 if (currentEnv && g_callbackOnContentChange) {
112117 jstring str = string2jstring (currentEnv, mmapID);
@@ -971,11 +976,10 @@ MMKV_JNI void trim(JNIEnv *env, jobject instance) {
971976 }
972977}
973978
974- MMKV_JNI void close (JNIEnv *env, jobject instance ) {
975- MMKV *kv = getMMKV (env, instance );
979+ MMKV_JNI void close (JNIEnv *env, jclass, jlong handle ) {
980+ MMKV *kv = reinterpret_cast < MMKV *>(handle );
976981 if (kv) {
977982 kv->close ();
978- env->SetLongField (instance, g_fileID, 0 );
979983 }
980984}
981985
@@ -1021,6 +1025,14 @@ MMKV_JNI void destroyNB(JNIEnv *env, jobject instance, jlong pointer, jint size)
10211025 free (reinterpret_cast <void *>(pointer));
10221026}
10231027
1028+ MMKV_JNI void readNB (JNIEnv *env, jobject instance, jlong pointer, jbyteArray buffer, jint size) {
1029+ if (pointer && buffer && size > 0 ) {
1030+ auto arraySize = env->GetArrayLength (buffer);
1031+ auto copySize = size < arraySize ? size : arraySize;
1032+ env->SetByteArrayRegion (buffer, 0 , copySize, reinterpret_cast <jbyte *>(pointer));
1033+ }
1034+ }
1035+
10241036MMKV_JNI jint writeValueToNB (JNIEnv *env, jobject instance, jlong handle, jstring oKey, jlong pointer, jint size) {
10251037 MMKV *kv = reinterpret_cast <MMKV *>(handle);
10261038 if (kv && oKey) {
@@ -1227,7 +1239,7 @@ static JNINativeMethod g_methods[] = {
12271239 {" removeValuesForKeys" , " ([Ljava/lang/String;)V" , (void *) mmkv::removeValuesForKeys},
12281240 {" clearAll" , " ()V" , (void *) mmkv::clearAll},
12291241 {" trim" , " ()V" , (void *) mmkv::trim},
1230- {" close" , " ()V" , (void *) mmkv::close},
1242+ {" close" , " (J )V" , (void *) mmkv::close},
12311243 {" clearMemoryCache" , " ()V" , (void *) mmkv::clearMemoryCache},
12321244 {" sync" , " (Z)V" , (void *) mmkv::sync},
12331245 {" isFileValid" , " (Ljava/lang/String;Ljava/lang/String;)Z" , (void *) mmkv::isFileValid},
@@ -1272,6 +1284,7 @@ static JNINativeMethod g_methods[] = {
12721284 {" setCallbackHandler" , " (ZZJ)V" , (void *) mmkv::setCallbackHandler},
12731285 {" createNB" , " (I)J" , (void *) mmkv::createNB},
12741286 {" destroyNB" , " (JI)V" , (void *) mmkv::destroyNB},
1287+ {" readNB" , " (J[BI)V" , (void *) mmkv::readNB},
12751288 {" writeValueToNB" , " (JLjava/lang/String;JI)I" , (void *) mmkv::writeValueToNB},
12761289 {" setWantsContentChangeNotify" , " (Z)V" , (void *) mmkv::setWantsContentChangeNotify},
12771290 {" checkContentChangedByOuterProcess" , " ()V" , (void *) mmkv::checkContentChanged},
0 commit comments