我最近在使用Android裡的JNI,我發現只要調用的是GetStaticMethodID,無論是用CallVoidMethod還是CallStaticVoidMethod,都可以正常調用JAVA裡的靜態方法,這是為什麼?
還有,在C 中,非主線程中,我用過AttachCurrentThread,可調用靜太的JAVA方法,但無法使用非靜態的方法,是我使用錯了嗎?
無論是用CallVoidMethod還是CallStaticVoidMethod,都可以正常調用JAVA裡的靜態方法,這是為什麼?
A:這個我覺得是不可能的
還有,在C 中,非主線程中,我用過AttachCurrentThread,可調用靜太的JAVA方法,但無法使用非靜態的方法,是我使用錯了嗎?
A:都可以調用,只是調用方法不同,靜態方法需要類型名,而成員方法需要實例名
(*useEnv)->CallStaticVoidMethod(useEnv, mJniclass, mMethodID, len); // mJniClass是類名
(*env)->CallVoidMethod(env,obj,mMethodID,fileId);//obj是類的實例化對象