美文网首页
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