android - what makes my map fragment loading slow? -


प्रदर्शन संवर्धन:

पहले मैंने ALL ड्रॉएबल फ़ोल्डर में छवियां, यह हो सकता है कि यह कारण पहले कि मैप धीमा हो जाए, जब स्क्रीन पर मार्कर खींचें, तो छवि स्क्रीन के आकार में फिट नहीं हो सकती। अब मैंने ड्रॉबल-एमडीपीआई , ड्रॉबल-एचडीपीआई में छवियों को बचाया है और इसी तरह, ऐप पहले की तुलना में चिकनी काम करता है। आशा है कि यह मदद करता है

मूल प्रश्न:

मैंने एक टुकड़ा में एक नक्शा बनाई है, स्रोत कोड नीचे पाया जा सकता है।

नक्शा टुकड़ा सुस्त होता है जब पहली बार यह लोड होता है। अगर मैं किसी भी दूसरे टुकड़े को जाता हूं और मैप के टुकड़े को फिर से दबाता हूं, तो इसे तेजी से लोड होता है और अब कोई स्लग नहीं होता।

क्या कोई मुझे बता सकता है कि यहाँ क्या हो रहा है? धन्यवाद!

fragment_map.xml, आईडी नक्शा

  & lt;? Xml संस्करण = "1.0" एन्कोडिंग = "यूटीएफ -8" है? & gt; & Lt; टुकड़ा xmlns: एंड्रॉइड = "http://schemas.android.com/apk/res/android" xmlns: नक्शा = "http://schemas.android.com/apk/res-auto" एंड्रॉइड: id = " @ + आईडी / नक्शा "एंड्रॉइड: layout_width =" match_parent "एंड्रॉइड: layout_height =" match_parent "एंड्रॉइड: name =" com.google.android.gms.maps.SupportMapFragment "/ & gt;   

MyMapFragment.java (इसमें onCreateView और setUpMapIfNeeded )

  @Override सार्वजनिक दृश्य क्रिएटिव्यू (इसमें शामिल है) लेआउटइनफ्लेटर इन्फ्लाटर, व्यू ग्रुप कंटेनर, बंडल सहेजे गए इन्स्टेंसस्टेट) {try {rootView = inflater.inflate (आर। लेट। फ्रैगमेंट_मैप, कंटेनर, फॉल्स); } पकड़ (InflateException ई) {/ * नक्शा पहले से ही वहाँ है, बस के रूप में देखने के लिए वापस * / Log.e (टैग, "inflateException"); } setUpMapIfNeeded (); वापसी रूट दृश्य; } सार्वजनिक शून्य setUpMapIfNeeded () {// यह पुष्टि करने के लिए एक रिक्त जांच करें कि हमने पहले से ही fragment_map को इन्स्तांत नहीं किया है यदि (myMap == नल) {// SupportMapFragment से fragment_map प्राप्त करने का प्रयास करें myMap = ((SupportMapFragment) MainActivity.fragmentManager.findFragmentById (R.id.map))। getMap (); // जाँचें कि क्या हम fragment_map प्राप्त करने में सफल रहे हैं अगर (myMap! = नल) {setUpMap (); }}}}    

मैं अपने आवेदन में एक बहुत ही हैक लेकिन प्रभावी तरीके का उपयोग कर रहा हूं, लेकिन यह अच्छा काम करता है ऐप लॉन्च के बाद मेरा नक्शा फ्रैग्मेंट प्रदर्शित नहीं होता है! अन्यथा यह कोई मतलब नहीं होगा।

इसे अपने लांचर गतिविधि के onCreate में रखें:

  // फिक्सिंग बाद में मैप लोड हो रहा है विलंब नया थ्रेड (नया रननबल () {@Override सार्वजनिक शून्य चला ({{MapView mv = new MapView (getApplicationContext ()); mv.onCreate (null); mv.onPause (); mv.onDestroy ();} पकड़ (अपवाद को नजरअंदाज कर दिया गया) { } } })।प्रारंभ();   

यह एक पृष्ठभूमि थ्रेड में मैपव्यू बनाएगा (ui से बहुत दूर) और इसके साथ, सभी Google Play सेवाओं और मैप डेटा को आरंभ करेगा।

लोड किए गए डेटा के बारे में 5 एमबी अतिरिक्त है।

अगर किसी के पास सुधार के लिए कुछ सुझाव हैं, तो कृपया टिप्पणी करने में संकोच करें!


जावा 8 संस्करण:

  // फिक्सिंग बाद में मैप लोड हो रहा है विलंब नया थ्रेड (() - & gt; {try {mapView mv = नया मानचित्रव्यू (getApplicationContext ()); mv.onCreate (null); mv.onPause (); mv.onDestroy ();} पकड़ (अपवाद की उपेक्षा) {}})। प्रारंभ ();    

Comments

Popular posts from this blog

php - PDO bindParam() fatal error -

logging - How can I log both the Request.InputStream and Response.OutputStream traffic in my ASP.NET MVC3 Application for specific Actions? -

java - Why my included JSP file won't get processed correctly? -