2013-01-19 14 views
12

मैं एक ऐसे ऐप पर काम कर रहा हूं जो एक Google मानचित्र (एपीआई v2) को एक टुकड़े के रूप में दिखाता है। जब ऐप लोड होता है तो यह नक्शा दिखाने से पहले कुछ सेकंड के लिए एक खाली सफेद स्क्रीन दिखाता है। मैंने लॉग स्टेटमेंट का उपयोग किया है, जहां देरी है, लेकिन मुझे नहीं पता कि यह इतना धीमा क्यों है।setContentView() मानचित्र खंड के साथ धीमा

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    Log.i(TAG, "onCreate Start -------------------------------"); 
    super.onCreate(savedInstanceState); 
    Log.i(TAG, "onCreate 1 -------------------------------"); 
    setContentView(R.layout.activity_main); 
    Log.i(TAG, "onCreate 2 -------------------------------"); 
    do_async_setup(); 
    Log.i(TAG, "onCreate 3 -------------------------------"); 
    prefs = getSharedPreferences(PREFS_NAME, 0); 
    prefs_editor = prefs.edit(); 
    Log.i(TAG, "onCreate Finish -------------------------------"); 

यहाँ और उत्पादन होता है:

यहाँ मेरी onCreate है।

01-20 10:05:28.802: I/HeadsUp(19544): onCreate Start ------------------------------- 
01-20 10:05:28.802: I/HeadsUp(19544): onCreate 1 ------------------------------- 
01-20 10:05:30.396: I/HeadsUp(19544): onCreate 2 ------------------------------- 
01-20 10:05:30.396: I/HeadsUp(19544): onCreate 3 ------------------------------- 
01-20 10:05:30.403: I/HeadsUp(19544): onCreate Finish ------------------------------- 

आप सेटकंटेंट व्यू के लिए 1.5 सेकंड देरी देख सकते हैं। मेरा लेआउट यहाँ है।

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/map" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     class="com.google.android.gms.maps.SupportMapFragment"/> 

</RelativeLayout> 

यह बस खराब दिखता है, जैसे लोड होने पर ऐप जमे हुए है। मैं या तो इसे कैसे बढ़ा सकता हूं या देरी को छुपा सकता हूं?

धन्यवाद,

+0

विशेष रूप से आपकी समस्या कहां से पता लगाने के लिए ट्रेसव्यू का उपयोग करें। – CommonsWare

+0

@ कॉमन्सवेयर, अगर मैं इसे मूल रूप से पढ़ रहा हूं तो यह मुझे बताता है कि लॉग ने मुझे क्या बताया। setContentView ऑनक्रेट विधि के लिए 'टाइम' के लगभग 44% का उपयोग कर रहा है। वास्तविक समय सहित 3211.060 जो मुझे लगता है कि मिलीसेकंड हैं? साथ ही, यह ActionBarSherlockNative.setContentView() हो सकता है, यही कारण है कि यह xml आदि को इतनी धीमी गति से लोड कर रहा है? सबसे लंबे समय तक चलने वाले बाल तरीकों से नीचे कदम उठाने के लिए मैं लेआउटइनफ्लेटर.क्रेटव्यूफ्रॉमटैग पर जाता हूं और कुछ और कदम SupportMapFragment.onCreateView() अभी भी 1998ms पर और फिर कुछ और Google जीएमएस कोड में मिलता है। तो यह Google मानचित्र खंड की तरह दिखता है। क्या यह सही लगता है? – Rob

+0

ठीक है, सबसे अधिक संभावना अपराधी नक्शा होगा, इसलिए मुझे लगता है कि यह आश्चर्य की बात नहीं है। कहा जा रहा है, यह भी सुझाव देता है कि आप संभवतः अटक गए हैं। आप इसे किस प्रकार के हार्डवेयर पर चल रहे हैं? – CommonsWare

उत्तर

12

इस तरह के एंड्रॉयड में नए नक्शे v2 के रूप में एक GLSurfaceView उपयोग करने का एक खामी है। देरी GLSurfaceView के प्रारंभिकरण के कारण होती है। Googler से पोस्ट # 5 के पास एक संक्षिप्त स्पष्टीकरण के लिए http://code.google.com/p/gmaps-api-issues/issues/detail?id=4639 देखें और इस समस्या (थोड़ा) की सहायता के लिए एक स्निपेट देखें। कृपया अपनी प्राथमिकता बढ़ाने के लिए इस मुद्दे को तारांकित करें।

+0

धन्यवाद, यह मेरे लिए पुष्टि करता है। – Rob

2

मुझे पता चला है कि यदि आपके पास डिबगिंग सत्र कनेक्ट होता है तो यह बहुत धीमा हो सकता है, लेकिन आमतौर पर जब आप नहीं करते हैं तो यह अधिक स्वीकार्य गति होती है। यदि यह यूएसबी केबल डिस्कनेक्ट के साथ तेजी से चलता है, तो शायद यही कारण है।

संबंधित मुद्दे