我正在使用 Java 中的资产管理器打开一个文件以在我的本地环境中读取。我希望只在初始化时打开这个文件一次,然后多次使用文件中定义的函数。为此,我需要将资产管理器保持在全局范围内。我目前在 C++ 中有以下内容:
extern "C" {
JNIEXPORT jstring JNICALL
Java_com_torch_torchdemo_TorchDemo_callTorch( JNIEnv* env,
jobject thiz,
jobject assetManager) {
// get native asset manager
if(globalManager == NULL){
jobject globalManager = env->NewGlobalRef(assetManager)
AAssetManager* manager = AAssetManager_fromJava(env, globalManager);
}
但是,这抱怨 globalManager 没有定义。这是有道理的,因为在初始化时,它不是。我找不到任何关于如何解决这个问题的参考资料。大多数全局引用问题都是关于保持对对象的引用。但是,我需要保留对 AAssetManager 的引用。