【发布时间】:2021-10-13 05:38:22
【问题描述】:
在 Android 上的 JNI 中使用 C++ 全局变量是否可以接受?
如果是这样,我想知道它的生命周期。
当 a.cpp 连接到 b.java 并创建 b 的实例(此时是否初始化全局变量?)和销毁(此时是否销毁全局变量?)。
简而言之,C++ 端的全局变量与连接的 Java 实例共享生命周期?
【问题讨论】:
-
全局变量是否引用了
jobject?如果不是,它与托管变量的本机库的生命周期相关联。 -
如果我在b的构造函数作用域(非静态)中绑定native-lib,那么实例b被销毁时它会被销毁吗?
-
没有。正如我所说,本机对象的生命周期与本机库有关。 Java 世界中发生的任何事情都无关紧要。
-
那你知道原生库的生命周期吗?当我像下面这样绑定native-lib时------------------------ class b { init { System.loadLibrary("native-lib") } }
-
它会一直加载,直到加载它的类加载器被销毁。在实践中,它会永远保持加载状态。
标签: android c++ java-native-interface