android - 用于 Android 的 Mono 中的 JniHandleOwnership

标签 android xamarin.android

谁能给我解释一下这三个的确切含义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/

相关文章:

android - Fabric 插件无法通过 Android Studio 登录

android - 如何响应用户日历中事件的开始

android - 在 OnCreate 中隐藏软输入

c# - Xamarin : @(Content) build action is not supported

android - Mono for Android - 它是如何工作的?

java - 如何为不同的构建风格打包不同的 *.so 文件?

Android toast.makeText 上下文错误

java - 无法从 CursorWindow 读取第 0 行第 3 列。在访问数据之前确保游标已正确初始化

xamarin.android - 错误 :The "GenerateJavaStubs" task failed unexpectedly

c# - 绑定(bind)不起作用 MVVMCross