我正在尝试从用 java 编写的 IntentService 调用本机回调方法。IntentService 中的代码片段是这样的——
private static native void native_notificationCallback();
public void somemethod(){
//some other code...
native_notificationCallback();
}
另一个在一个单独的班级 -
private static native void native_initCallback();
public void somemethod(){
//some other code...
native_initCallback();
}
interface.cpp 是这样的——
void JNICALL Notification_initCallback(JNIEnv* env, jobject obj)
{
//code
}
void JNICALL Notification_notificationCallback(JNIEnv* env, jobject obj)
{
//code
}
void init(){
static const JNINativeMethod methods[] =
{
{"native_initCallback","()V",(void*)&Notification_initCallback},
{"native_notificationCallback","()V",(void*)&Notification_notificationCallback}
};
// Register the native hooks
if (env->RegisterNatives(cls, methods,sizeof(methods)/sizeof(methods[0])))
goto fail;
}
问题是当我调用native_initCallback
它时它工作得很好,但是当我调用native_notificationCallback
应用程序崩溃时给出java.lang.UnsatisfiedLinkError
. 我不明白为什么它适用于第一种方法,为什么不适用第二种方法,因为除了名称之外它们几乎相同。