2013-08-07 5 views
5

जब वेबव्यू वाला पृष्ठ पहले लोड होता है, तो कभी-कभी छवियां गायब होती हैं या गलत तरीके से प्रदर्शित होती हैं। यदि मैं पृष्ठ को फिर से लोड करता हूं तो वेबव्यू हमेशा पूरी तरह से प्रदर्शित होता है। मुझे पता है कि हर कोई पहले सोचता है कि मैं loadUrl के बाद जावास्क्रिप्ट सेट करता हूं, लेकिन यह सच नहीं है।वेबव्यू को सही ढंग से लोड करने के लिए दो बार लोड किया जाना चाहिए

onCreate में मेरे पास है:

learnWebView = (WebView)findViewById(R.id.learnWebView); 
learnWebView.setWebViewClient(new WebViewClient()); 
learnWebView.getSettings().setJavaScriptEnabled(true); 

फिर बाद में समारोह onCreate के बाद कहा जाता रहा है में:

learnWebView.loadUrl("myurl"); 

और हाँ, मुझे पता है कि loadUrl साथ समारोह onCreate हर बार के बाद कहा जाता है ।

 learnWebView.post(new Runnable() { 

      @Override 
      public void run() { 
       learnWebView.loadUrl("myurl"); 
      } 
     }); 

या यह पहले एक अभ्यस्त काम करते हैं, के मामले में:

 learnWebView.postDelayed(new Runnable() { 

      @Override 
      public void run() { 
       learnWebView.loadUrl("myurl"); 
      } 
     }, 500); 

आशा इस मदद करता है

+1

क्या यह एक यूआरएल या एंड्रॉइड संस्करण या किसी विशेष डिवाइस के लिए विशिष्ट है? यह हो सकता है कि WebView कैश की गई सामग्री को लोड करने और विफल या कुछ करने का प्रयास कर रहा है। यह कभी-कभी डेस्कटॉप वेबकिट ब्राउज़र पर होता है। क्या आपने पहले लोड पर ताजा कैश का उपयोग करने का प्रयास किया था? –

+0

असल में यह एंड्रॉइड 4.0 के लिए विशिष्ट प्रतीत होता है। 2.3 या 4.1 पर नहीं होता है। एक ताजा कैश का उपयोग करके आप मतलब सीखते हैं WebView.clearCache (सच)? –

+1

कॉलिंग clearCache() वास्तव में इसे और भी खराब बना दिया। इसने इसे फिर से लोड किया, इस मुद्दे को ठीक नहीं करेगा। –

उत्तर

9

बजाय अपने रास्ते के इस प्रयास करें, यह एक बुरी बात है।

+0

धन्यवाद आदमी, मैं कल इसे आजमाउंगा। –

+0

आपके सुझाव के मुकाबले मैंने जिस हैक को लागू किया है, उसके नुकसान क्या हैं? मेरा मतलब व्यावहारिक दृष्टिकोण से है कि मेरे रास्ते में क्या गलत हो सकता है जो इस तरह से गलत नहीं हो सकता है? जब मैं कल सही ढंग से यह काम सत्यापित करता हूं तो मैं स्वीकार करना सुनिश्चित कर दूंगा। –

+0

आप जानते हैं, आपके रास्ते के रूप में, आप मुख्य थ्रेड को सचमुच 1s के लिए सोते हैं और दोबारा दोबारा लोड करते हैं, इस तरह से वेबव्यू सिर्फ नौकरी को तुरंत निष्पादित करने दें ('पोस्ट()' विधि) या सबसे बुरे मामले में कुछ मिलीसेकंड के लिए देरी ('पोस्टडेलेड()' विधि) (केवल एक बार)। यदि आपको स्पष्टीकरण की आवश्यकता है। चीयर्स! – user2652394

1

onViewAttachedToWindow पर देखें। आपको onViewAttachedToWindow निकाल दिए जाने के बाद ही जावास्क्रिप्ट में अपने तर्क को संसाधित करना चाहिए।

0

मैं एक ही मुद्दे से मुलाकात की। सुनिश्चित नहीं है कि यह आपके जैसा ही मामला है। मैंने 3 दिनों से अधिक समय व्यतीत किया और वास्तव में यह कारण पाया कि एक और वेबव्यू ऑब्जेक्ट कुछ CPU प्रदर्शन को सहेजने के लिए पॉज़ टाइमर() को कॉल करता है जो वास्तव में "सभी वेब दृश्यों के लिए सभी लेआउट, पार्सिंग और जावास्क्रिप्ट टाइमर रोकता है।"

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

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