我需要使用"interface"在Java中实现回调函数.我已将应用程序部分编写为MyJavaFunction(int size, m_GetSizeInterface);
m_GetSizeInterface是一个包含回调函数GetSize的接口.此GetSize方法在应用程序中被覆盖.在JNI中,我需要调用具有原型的CPP函数int MyCPPFunction(int size, int (*callback)(int* ID));
如何将此GetSize作为参数传递给JNI中的MyCPPFunction?请帮忙
public int GetSize (m_SizeClass arg0)
{
g_size = arg0.size;
return 0;
}
Run Code Online (Sandbox Code Playgroud) java java-native-interface function-pointers interface callback
首先,让我列出我能得到的最好结果。 jni 调用以自定义 java 接口作为参数的 java 方法
这不能回答我的。让我解释一下我的问题。我想按如下方式调用 NDK。
(1)Java -> (2)CPP -> (3)C (新线程) -> (4)CPP -> (5)Java
代码如下。
(1) 爪哇
public interface Callback<T> {
void success(T result);
}
private native void jniUploadAsync(String imagePath, Callback<String> callback);
jniUploadAsync(file.getAbsolutePath(), new Callback<String>() {
@Override
public void success(final String result) {
Log.v("MyClass: result:: ", result);
}
});
Run Code Online (Sandbox Code Playgroud)
(2) CPP
static JavaVM *jvm;
void imageUploadCallback(char *json, void *completionCallback) {
JNIEnv *env;
jint rs = jvm->AttachCurrentThread(&env, NULL);//create JNIEnv from JavaVM
jclass cbClass = env->FindClass("org/winster/test/Callback");
jmethodID …Run Code Online (Sandbox Code Playgroud)