从活动方法调用本机C / C ++方法时,该方法的第二个参数代表什么?例如,考虑一个简单的过程,例如在test.cpp中定义:
void test( JNIEnv *env, jobject obj )
{
}
(为简单起见,我省略了真实的方法名称)。在活动类中,我可以声明本机方法,例如:
native static void test();
如果我从活动的onCreate()方法调用它,那么obj参数是否“代表”活动?
最佳答案
obj表示对象引用,如果方法是静态的,则表示类引用。例如:
public class HelloJNI {
static {
System.loadLibrary("hellojni");
}
public native String test();
public native static void staticTest();
}
public class JNITest extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
HelloJNI.staticTest() // jobject obj = HelloJNI.class
HelloJNI hellojni = new HelloJNI();
hellojni.test(); // jobject obj = hellojni
}
}