如何从本机函数 return QAndroidJniObject?
How to return QAndroidJniObject from a native function?
我正在尝试从本机函数 return QAndroidJniObject
。使用 Qt 5.5 和 QtAndroidExtras。
这是我的第一个天真的实现:
QAndroidJniObject doSomething() {
return QAndroidJniObject("android/os/Bundle", "()V");
}
static jobject nativeFunc(JNIEnv *env, jclass, jlong nativePointer, int, jstring, jstring, jstring)
{
QAndroidJniObject obj = doSomething();
return obj.object();
}
很遗憾,我遇到了一个错误:
I/dalvikvm(32413): JNI ERROR (app bug): accessed deleted global reference 0x1de00462
当QAndroidJniObject
被销毁时,底层的java对象也被销毁。好像 QAndroidJniObject
没有 detach()
方法什么的。
通过创建新 local reference:
解决了这个问题
return env->NewLocalRef(obj.object<jobject>());
我正在尝试从本机函数 return QAndroidJniObject
。使用 Qt 5.5 和 QtAndroidExtras。
这是我的第一个天真的实现:
QAndroidJniObject doSomething() {
return QAndroidJniObject("android/os/Bundle", "()V");
}
static jobject nativeFunc(JNIEnv *env, jclass, jlong nativePointer, int, jstring, jstring, jstring)
{
QAndroidJniObject obj = doSomething();
return obj.object();
}
很遗憾,我遇到了一个错误:
I/dalvikvm(32413): JNI ERROR (app bug): accessed deleted global reference 0x1de00462
当QAndroidJniObject
被销毁时,底层的java对象也被销毁。好像 QAndroidJniObject
没有 detach()
方法什么的。
通过创建新 local reference:
解决了这个问题return env->NewLocalRef(obj.object<jobject>());