7

伙计们,

在我的 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) {
   ...
}

我想知道哪个声明是正确的。

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

如果有人能对此有所了解,我将不胜感激。

预先感谢您的帮助。

问候,
彼得

4

1 回答 1

12

如果jclass方法是,则为static,否则为jobject。如果您javah按照 JNI 设计者的意图使用 ,您将始终得到正确的答案。

于 2013-09-18T02:51:36.313 回答