Мне нужно работать с ассетами в моей папке с ассетами из кода C/C++. Безопасно ли кэшировать указатель на AAssetManager следующим образом...:
AAssetManager* assetMgr = NULL;
void Java_com_example_createAssetManager(JNIEnv* env, jclass clazz, jobject assetManager)
{
AAssetManager* mgr = AAssetManager_fromJava(env, assetManager);
assert(NULL != mgr);
assetMgr = mgr;
}
... и затем использовать его всякий раз, когда мне это нужно? createAssetManager вызывается из метода Java onCreate основного действия (потока пользовательского интерфейса), но использование в C/C++ происходит при естественной обработке рендеринга и игрового тика, вызываемого из собственных методов в реализации GLSurfaceView.
1) Будет ли указатель assetsMgr указывать на действительный объект в течение всего срока службы приложения? Достаточно ли создать его также как статическую переменную на стороне Java (в классе Activity), чтобы сборщик мусора не уничтожил ее?
2) есть ли опасность, что у меня возникнут проблемы с потоками?
Спасибо, Том Атом