2012-05-06 12 views
10

मैं एक एमपीईजीई-स्ट्रीम को पुनर्प्राप्त करने वाले यूआरएल के माध्यम से एक वेब कैमरा की सामग्री दिखाने के लिए UIWebView स्थापित कर रहा हूं।UIWebView और जीवित रहें?

मुझे पता चला है कि अगर मैं एक अलग कैमरा करने के लिए स्विच करना चाहता था, यह चिकनी अगर मैं UIWebView की सारी सामग्री को रीसेट नहीं किया देखा, लेकिन इसके बजाय पेज मैं इसे में लोड में एक जावास्क्रिप्ट समारोह की स्थापना की, को बदलने के लिए छवि की सामग्री, इस तरह:

<img id='iImage' src='about:blank'> 
<script type='text/javascript'> 
function show(url) 
{ 
    iImage.src = url; 
} 
</script> 

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

हालांकि, अगर मैं दो वीडियोस्ट्रीम के बीच आगे और पीछे स्विच करता हूं, तो मुझे किसी बिंदु पर UIWebView में त्रुटि मिलती है, और परीक्षण और त्रुटि से मुझे पता चला है कि यह चौथा बार होता है जब मैं वही वीडियोस्ट्रीम दिखाता हूं राय। यदि मैं ब्राउज़र-टैब में 4 वीडियोस्ट्रीम खोलने का प्रयास करता हूं, तो 4 वें लोडिंग चक्र में फंस जाता है, जब तक कि मैं पिछले तीन में से किसी एक को बंद नहीं करता।

यह मैं विश्वास है कि:

  1. प्रश्न में कैमरा केवल एक ही समय
  2. पर 3 धाराओं की सेवा <img...> टैग पर src विशेषता बदलने कर सकते हैं पिछले धारा
बंद नहीं होती है

क्या यह रखरखाव से जुड़ा जा सकता है? क्या वेबकिट ब्राउजर सिस्टम पिछले स्ट्रीम को जीवित रख सकता है, भले ही मैंने उन्हें <img...> टैग में दिखाना बंद कर दिया हो? एक wv.EvaluateJavascript("show(url)")

4 कॉल पर, मैं मिलता है:

असल में, पुन: पेश करने मैं यह कर सकता:

  1. सेट अप एक UIWebView
  2. कॉल में उपरोक्त सामग्री इस 4 बार बीच में नीला प्रश्न चिह्न।

    अपराधी रह सकते हैं? और यदि हां, तो क्या मैं इसे नियंत्रित कर सकता हूं?

+0

रखें जिंदा ब्राउज़र अतिरिक्त सामग्री प्राप्त करने के लिए एक कनेक्शन पुन: उपयोग करने की अनुमति के लिए माना जाता है।तो आप यूआरएल बदलते हैं (मैं एक ही डोमेन पर मानता हूं लेकिन अलग पथ), पिछले कनेक्शन का पुन: उपयोग किया जाना चाहिए। आपकी समस्या यह लगता है कि प्रत्येक छवि यूआरएल के लिए नए सॉकेट खोले जाते हैं। एमजेपीईजी के साथ वेबकिट बग के कारण हो सकता है। संपूर्ण छवि HTML तत्व को बदलने का प्रयास करें और देखें कि क्या इससे मदद मिलती है। –

+0

हां, यह काम करता है, लेकिन यह स्पष्ट रूप से मैं क्या करना चाहता हूं। –

+0

वह क्यों है? छवि तत्व को बदलना उस समस्या को पेश नहीं करना चाहिए जिसे आपने वेब दृश्य की सभी सामग्री को बदल दिया था। –

उत्तर

5

यह वेबकिट के कारण होता है, यदि स्रोत बदल जाता है, भले ही छवि संसाधन लोड हो रहा हो। यह आम तौर पर छवियों के लिए कोई समस्या नहीं पैदा करता है लेकिन कभी-कभी समाप्त होने वाली स्ट्रीमिंग छवि को पृष्ठ को फिर से लोड होने तक कभी नहीं जाने दिया जाता है।

क्रोमियम के खिलाफ दायर एक बग है जो इस मुद्दे पर इंगित करता है। https://code.google.com/p/chromium/issues/detail?id=73395

टिप्पणी धागे से, छवि को बदलने से पहले window.stop() पर कॉल करना एक वर्कअराउंड है। यह ब्राउज़र में स्टॉप पर क्लिक करने जैसा ही है और सभी लोडिंग संसाधनों को निरस्त करने का कारण बनता है। उम्मीद है कि यह तथ्य है कि यह पेज को फिर से लोड करने का कारण नहीं बन रहा है, यह आपके सफेद फ्लैश से बच जाएगा।

मैं निम्नलिखित आजमाइए चाहते हैं:

<img id='iImage' src='about:blank'> 
<script type='text/javascript'> 
function show(url) 
{ 
    window.stop(); 
    iImage.src = url; 
} 
</script>