में एसेटमैनेजर का उपयोग करके मुझे सी/सी ++ कोड के भीतर से अपने संपत्ति फ़ोल्डर में संपत्तियों के साथ काम करने की आवश्यकता है। इसे इस तरह 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 को मुख्य गतिविधि (यूआई थ्रेड) के क्रोट विधि पर जावा से बुलाया जाता है लेकिन सी/सी ++ में उपयोग तब होता है जब जीएलएसयूफेस व्यू कार्यान्वयन में देशी तरीकों से नाटकीय रूप से प्रसंस्करण और गेम टिक को संसाधित किया जाता है।
1) क्या परिसंपत्ति एमजी पॉइंटर वैध ऑब्जेक्ट के लिए वैध ऑब्जेक्ट को इंगित करेगा? क्या यह जावा पक्ष (गतिविधि वर्ग में) पर स्थैतिक चर की तरह बनाने के लिए पर्याप्त है, इसलिए कचरा कलेक्टर इसे नष्ट नहीं करेगा?
2) क्या कोई खतरा है कि मैं धागे के साथ कुछ समस्याओं में भाग जाऊंगा?
धन्यवाद, संपत्ति प्रबंधक कैश करने के लिए टॉम एटम
सुरक्षित पक्ष पर एरर और कैश न करें। 'AAssetManager_fromJava()' बहुत तेज़ है। –
उत्तर के लिए धन्यवाद। कारण मैं इसे कैश करना चाहता था यह था कि मुझे नहीं पता कि विधि कॉल में "जॉबजेक्ट एसेट मैनेजर" के बिना पॉइंटर कैसे प्राप्त करें। तो, क्या मुझे इस पैरामीटर को जावा से सी/सी ++ में हर टिक कॉल में जोड़ना होगा, अगर मुझे टिक के दौरान इसकी आवश्यकता होगी? या जब मैं इसकी आवश्यकता हो तो ऑब्जेक्ट के लिए जावा से क्वेरी कैसे कर सकता हूं (AssetManager के लिए जावा से पूछें, फिर AAssetManager_fromJava को कॉल करें, फिर इसका उपयोग करें ...) –