伙计们,
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.
如果有人能够对此有所了解,我将不胜感激.
预先感谢您的帮助.
问候,
彼得
解决方法
如果方法是静态的,则为jclass,否则为jobject.如果您使用javah,正如JNI设计者所期望的那样,您将始终得到正确的答案.