美文网首页
JNI C++ Map的使用

JNI C++ Map的使用

作者: izheer | 来源:发表于2023-05-03 10:46 被阅读0次

test_map.cpp

#include <map>

static std::map<long, EditCallback *> callbackMap;

/**
 * 编辑模块监听
 */
void setCallback(long pEngine, EditCallback *editCallback) {
    callbackMap[pEngine] = editCallback;
}

void deleteCallback(long pEngine) {
    if (callbackMap.count(pEngine) == 0) {
        return;
    }
    int attach;
    JNIEnv *env = GetAttachEnv(&attach);
    if (env != nullptr) {
        //销毁java层监听对象
        if (callbackMap[pEngine]->objCallback) {
            env->DeleteGlobalRef(callbackMap[pEngine]->objCallback);
            callbackMap[pEngine]->objCallback = nullptr;
        }
    }
    if (attach) {
        DetachEnv();
    }
   auto it = callbackMap.find(pEngine);
    if (it != callbackMap.end()){
       EditCallback* callback = it->second;
        callbackMap.erase(pEngine);
        delete callback;
        callback = nullptr;
    }
    LOGE("delete EditCallbackMap. count:%d", callbackMap.size());
}

相关文章

网友评论

      本文标题:JNI C++ Map的使用

      本文链接:https://www.haomeiwen.com/subject/aaqprdtx.html