2015-12-03 8 views
6

ऐसा लगता है कि एपीआई प्रतिस्थापनइंटरमेटमथप्लेयरइटम: कुछ सेकंड के लिए मुख्य धागा फंस जाएगा, मैं समझता हूं कि आइटम को बदलने से नए आइटम की जानकारी की आवश्यकता होती है जिसमें प्रीलोड करने में कुछ समय लग सकता है। लेकिन सवाल उठते हैं कि क्यों प्रतिस्थापित करें CurrentItemWithPlayerItem: के साथ शून्य आइटम ऑब्जेक्ट मुख्य थ्रेड भी फंस जाएगा ?? यह मेरे साथ होता है कि कभी-कभी शून्य खिलाड़ी इटैम को प्रतिस्थापित करने में 5 सेकंड से अधिक समय लगता है। मुझे आश्चर्य है कि इस मुद्दे से बचने के लिए मैं क्या कर सकता हूं। किसी भी सलाह के लिए धन्यवाद!आईओएस AVPlayer प्रतिस्थापित करें CurrentItemWithPlayerItem: शून्य ब्लॉक यूआई थ्रेड

उत्तर

1

जब मैं UICollectionView का उपयोग के माध्यम से स्थानीय फोटो लाइब्रेरी में वीडियो प्रदर्शित करने और पूर्वावलोकन करने के लिए करता था तो मैं इसी तरह के अवरुद्ध यूआई थ्रेड मुद्दे पर आया था।

स्विचिंग वीडियो पर स्क्रॉल सुचारू रूप से नहीं है, इसलिए मैं कुछ विधि ब्लॉक यूआई मैं Instruments की Core Animation का उपयोग thread.Then विश्लेषण करने के लिए वास्तव में क्या यूआई धागा पर कब्जा .इसके Time Profiler मुझे पता चला कि replaceCurrentItemWithPlayerItem के बारे में 30ms करने की जरूरत है लगता है मुख्य धागे में निष्पादित करें, जो 16ms से अधिक (1000/60 (एफपीएस) है) परिणामस्वरूप चटनी स्क्रॉलिंग में परिणाम।

समस्या को हल करने के लिए, पहले मुझे लगता है कि GCD का उपयोग कर पृष्ठभूमि धागा करने के लिए replaceCurrentItemWithPlayerItem डाल कोशिश की, लेकिन यह निश्चित नहीं work.I'm नहीं करता है, तो ऐसा इसलिए है क्योंकि कोको ही जरूरत यूआई अद्यतन जब कॉल replaceCurrentItemWithPlayerItem, जो यूआई का मतलब थ्रेड अभी भी ब्लॉक है। आखिरकार मैंने इसे स्क्रॉलिंग एंड पर replaceCurrentItemWithPlayerItem डालकर काम किया (प्रतिनिधि func scrollViewDidEndDecelerating(scrollView: UIScrollView)).अब स्क्रॉलिंग सुचारू रूप से है, हाँ!

इसलिए, मेरी सलाह स्पष्ट है: विश्लेषण करने के लिए वास्तव में क्या है, तो आप मेरा दिन बचाया यूआई धागा

+0

धन्यवाद दोस्त पर कब्जा उपकरण का उपयोग करते हुए: डी –

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