[英]Android JNI Global Reference Subtleties
好吧,鉴于从Cpp采取的以下步骤
* A *的寿命是多少?
我的期望如下。 字典本身是全局的,因此受到了垃圾回收的保护,当我从jni调用“ Add”方法时* A *被传递回“ java”中,然后字典将持有对该字典的新引用,从而也保护了它免受垃圾的侵害采集。 因此,我希望* A *的持续时间与字典一样长(忽略外部干预)。
我在正确的轨道上吗? 谢谢。
当我从jni调用'Add'方法时,会将A '传递回java'中,然后字典将保留对此的新引用,从而也保护了它免受垃圾收集的侵害。
否。您正在混淆本地和全局引用的两个属性。 本地引用仅在创建它的JNI调用期间有效。此后,它无效。 如果要在后续的JNI调用中再次使用它,请将其设置为GlobalRef。
因此,我希望A的使用时间与字典一样长(忽略外部干预)。
是的,但是引用本身已经无效,因此您无论如何都无法使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.