में दो प्रक्रियाओं के बीच स्मृति साझा करें मैंने एक एंड्रॉइड सेवा बनाई है जो कैमरे के फ्रेम बाइट सरणी को स्वीकार करने के लिए अनुप्रयोगों के लिए एक इंटरफेस का खुलासा करता है। सेवा इस कैमरे के फ्रेम को संसाधित करने के लिए मूल पुस्तकालय का उपयोग करती है और कैमरा फ्रेम के बारे में कुछ डेटा देता है। लक्ष्य वास्तविक समय में कैमरा पूर्वावलोकन फ्रेम को संसाधित करने में सक्षम होना है।Dalvik
समस्या - मेरी एआईडीएल फ़ाइल में एक एपीआई है जिसे initFrame (बाइट [] फ्रेम में) कहा जाता है। जब भी मैं इस एपीआई को एक एप्लीकेशन (एक अलग प्रक्रिया में चल रहा हूं) से कॉल करता हूं, तो मुझे एक अपवाद मिलता है - TransactionTooLargeException
ऐसा इसलिए है क्योंकि बाइट सरणी का आकार> 1 एमबी है और बाइंडर लेनदेन बफर का सीमित निश्चित आकार 1 एमबी है । यहां तक कि यदि आकार सीमा बड़ी थी, तो वास्तविक समय प्रसंस्करण के लिए बड़े बफर की प्रतिलिपि बनाना बहुत अक्षम है।
प्रश्न - क्या एंड्रॉइड में दो दल्विक प्रक्रियाओं के बीच स्मृति साझा करने का कोई तरीका है जो समस्या को हल करने में मदद कर सकता है? मैंने MemoryFile देखा लेकिन ऐसा लगता है कि मेमोरीफ़ाइल का उपयोग केवल इस बिंदु पर छिपा एपीआई का उपयोग करके प्रक्रियाओं के बीच स्मृति साझा करने के लिए किया जा सकता है।
मैंने ashmem देखा लेकिन मेरे जावा एप्लिकेशन में ashmem का उपयोग कैसे करें? मैं एनडीके के साथ आवेदन बोझ नहीं करना चाहता। –
यह एक ऐसा एप्लिकेशन है जो दिखाता है कि विभिन्न अनुप्रयोगों/मूल सी और जावा के बीच mmap को ashmem का उपयोग कैसे करें। https://github.com/vecio/AndroidIPC – user3387542