C/C++ コード内から、assets フォルダー内のアセットを操作する必要があります。このように 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 はメイン アクティビティ (UI スレッド) の Java onCreate メソッドから呼び出されますが、C/C++ での使用は、GLSurfaceView 実装のネイティブ メソッドから呼び出されるレンダリングとゲーム ティックをネイティブに処理する場合です。
1) assetMgr ポインターは、アプリの有効期間全体で有効なオブジェクトを指しますか? ガベージ コレクターが破棄しないように、Java 側 (アクティビティ クラス) の静的変数のように作成するだけで十分ですか?
2) スレッドで問題が発生する危険性はありますか?
ありがとう、トム・アトム