什么代表本机方法jobject参数?

时间:2014-09-02 17:36:37

标签: android java-native-interface

当从活动方法调用本机C / C ++方法时,该方法的第二个参数代表什么?例如,考虑一个简单的过程,例如test.cpp:

void test( JNIEnv *env, jobject obj )
{
}

(为简单起见,我省略了真正的方法名称)。在activity类中,我可以声明本机方法,如:

native static void test();

如果我从活动的onCreate()方法调用它,那么obj参数'是否表示'活动?

1 个答案:

答案 0 :(得分:2)

如果方法是静态的,obj表示Object引用或Class引用。例如:

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
    }
}