Android ndk Android JNI方法-第二个参数是jclass还是jobject?

Android ndk Android JNI方法-第二个参数是jclass还是jobject?,android-ndk,Android Ndk,各位 在我的Android Java代码中,我有一个声明如下: public class SurfacePanelNative extends SurfaceView implements SurfaceHolder.Callback { ... private static native void native_render(); } 在本机代码中,我将函数声明为: void native_render(JNIEnv *env, jobject javaSurface) {

各位

在我的Android Java代码中,我有一个声明如下:

public class SurfacePanelNative extends SurfaceView implements SurfaceHolder.Callback {
   ...
   private static native void native_render();
}
在本机代码中,我将函数声明为:

void native_render(JNIEnv *env, jobject javaSurface) {
   ANativeWindow* window = ANativeWindow_fromSurface(env, javaSurface);
   ...
}
void native_render(JNIEnv *env, jclass clazz) {
   ...
}
查看网络上的一些示例,该函数似乎应声明为:

void native_render(JNIEnv *env, jobject javaSurface) {
   ANativeWindow* window = ANativeWindow_fromSurface(env, javaSurface);
   ...
}
void native_render(JNIEnv *env, jclass clazz) {
   ...
}
我想知道哪个声明是正确的

我认为第一个是正确的。否则,我没有足够的信息来获取javaSurface

如果有人能解释一下,我将不胜感激

提前感谢您的帮助

问候,

Peter

如果方法是
静态的
,则为
jclass
,否则为
jobject
。如果您使用
javah
,正如JNI设计人员所期望的那样,您将始终得到正确的答案。

@Peter这是正确的答案吗?不接受。@Phi Yes是正确的。OP通常不是最好的裁判。