JNI C++ Map的使用

2023-05-03  本文已影响0人  izheer

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());
}

上一篇 下一篇

猜你喜欢

热点阅读