JNI_OnLoad 與 JNI_OnUnload

JNI_OnLoad

Dalvik虛擬機加載C庫時,第一件事是調用JNI_OnLoad()函數,所以在JNI_OnLoad()里面進行一些初始化工作,如注冊JNI函數等等。注冊本地函數,可以加快java層調用本地函數的效率。

JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved){
    __android_log_print(ANDROID_LOG_INFO, "native", "Jni_OnLoad");
    return JNI_VERSION_1_4;
}

返回值是jint 類型,告訴Dalvik虛擬機此C庫使用哪一個JNI版本。如果你的庫里面沒有寫明JNI_OnLoad()函數,VM會默認該庫使用最老的JNI 1.1版本;

JNI_OnUnload

當虛擬機釋放該C庫時,則會調用JNI_OnUnload()函數來進行善后清除動作。

JNIEXPORT void JNI_OnUnload(JavaVM* vm, void* reserved){
    __android_log_print(ANDROID_LOG_INFO, "native", "JNI_OnUnload");
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容