我正在为 Android 使用 C++ 编写代码。主要代码是用 Java 编写的,但我想启动另一个从 JNI 调用调用的线程并从 C++ 访问 Assets 。但是,当我从 getAssets()
传递 AAssetsManager
时,它只在 JNI 函数调用的范围内工作。当其他线程尝试使用时,我得到一个无效指针。我还通过将对象 AAssetsManager
写入静态变量来确保它不会被垃圾回收。您对我如何让它发挥作用有什么建议吗?
在其他工作中,我想访问 AAssetManager
并缓存在其他对象中。
谢谢
最佳答案
仅保护 assetManager 对象不受 GC 影响是不够的。您需要一个全局引用:
gAssetManager = env->NewGlobalRef(assetManager);
关于Android:如何从 C++ 中的另一个线程读取 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18304357/