程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> jni-AndroidJNI如何在線程中調用java的非靜態方法

jni-AndroidJNI如何在線程中調用java的非靜態方法

編輯:編程綜合問答
AndroidJNI如何在線程中調用java的非靜態方法

我最近在使用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是類的實例化對象

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved