यह अच्छी तरह से किसी Android ऐप्लिकेशन में गूगल मैप्स का उपयोग कर लोगों की है कि वे केवल एक ही MapActivity
प्रक्रिया के अनुसार उपयोग कर सकते हैं पता है। एक अलग प्रक्रिया में प्रत्येक MapActivity डालने के कामकाज के साथ bug discussing this in detail है। मैं अपने ऐप में कुछ कारणों से ऐसा नहीं करना चाहता हूं और काम करने के लिए एक और कामकाज विकसित किया है।तकनीक
प्रत्येक Activity
कि एक नक्शे में शामिल है के लिए, मैं यह ActivityGroup
का विस्तार करने और बनाने/एक बच्चे गतिविधि के रूप में नष्ट onResume
/ MapActivity
में है। यह वहाँ एक बार में केवल एक MapActivity
का एक उदाहरण हो जाएगा सुनिश्चित करता है (यह मानते हुए कि आप एक Activity
है एक समय में दिखा)।
public class MyMapActivityGroup extends ActivityGroup {
@Override
protected void onResume() {
super.onResume();
addMapView();
}
@Override
protected void onPause() {
super.onPause();
removeMapView();
}
private void addMapView() {
Intent intent = new Intent(this, MyMapActivity.class);
Window window = getLocalActivityManager().startActivity("map", intent);
setContentView(window.getDecorView());
}
private void removeMapView() {
setContentView(new FrameLayout(this));
getLocalActivityManager().removeAllActivities();
}
}
MapActivity
मैं उपयोग कर रहा हूँ कुछ खास नहीं है और किसी भी संशोधन की आवश्यकता नहीं है: नीचे मेरी कार्यान्वयन का एक सरलीकृत संस्करण है। यह सिर्फ अपनी सामग्री दृश्य के रूप में MapView
सेट करता है।
यह मेरे लिए अच्छा काम करने लगता है। लेकिन क्या ऐसा करने के लिए कोई नकारात्मक पक्ष है? मैप युक्त गतिविधियों के बीच जाने पर मेरी मुख्य चिंता एक स्मृति रिसाव है।
मैं भी इस बारे में चिंतित था, लेकिन यह वास्तव में काफी बेहतर की तुलना में मैंने सोचा कि यह होगा प्रदर्शन करती है। 'MapActivity' को उस स्मृति को रखना चाहिए जो इसे स्मृति में प्रारंभिक रूप में करता है। और आपको एक अलग प्रक्रिया में प्रत्येक 'MapActivity' डालने के विकल्प के खिलाफ भी इस तकनीक का वजन करना होगा। –
ठीक है मैपएक्टिविटी क्या करता है। यह लाइब्रेरी द्वारा प्रबंधित डिवाइस कैश पर कुछ प्रकार के पुनः उपयोग करने योग्य शुरू होता है। पुष्टि करने के लिए खुश है कि यह ठीक काम करता है। –