谁能给我解释一下这三个的确切含义JniHandleOwnership Mono for Android 中的枚举值是?它们有什么区别?
最佳答案
很抱歉还没有更新类库文档。
Binding Android Types文档说明了各种 JniHandleOwnership
值在 Wrapping with Java.Lang.Object 中的含义。部分。
根据评论更新:
JniHandleOwnership.DoNotTransfer
如果 nothing 应该用handle
参数完成,则应该使用。这应该始终在 connector methods 内使用.JniHandleOwnership.TransferLocalRef
应该在您有本地引用时使用(例如,您调用了JNIEnv.CallObjectMethod()
,它返回一个本地引用)并且您想要传递对包装器的本地引用的所有权。JniHandleOwnership.TransferGlobalRef
应该在您拥有全局引用并且您希望将全局引用的所有权传递给包装器时使用:IntPtr grefFoo = JNIEnv.FindClass("Foo"); // FindClass() returns a gref var Foo = Java.Lang.Object.GetObject<Java.Lang.Class>(grefFoo, JniHandleOwnership.TransferGlobalRef);
关于android - 用于 Android 的 Mono 中的 JniHandleOwnership,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9938834/