2012-04-03 15 views
5

हाय,viewpager + वेबव्यू, कैसे वेबव्यू लोड हो रहा है को रोकने के लिए

मैं ViewPager का उपयोग करता है और सभी पृष्ठों WebViews शामिल है जिसे किसी एप्लिकेशन बनाया है। हर वेब-दृश्य सर्वर चित्र, वीडियो, एमपी 3 में शामिल है ...

WebView सेटिंग्स हैं

 public Object instantiateItem(View collection, int position) { 
      . 
      . 
      . 

      final RelativeLayout imageLayout = (RelativeLayout)   
      inflater.inflate(R.layout.omb_webview_layout, null); 
      WebView webview = (WebView) imageLayout.findViewById(R.id.video_view); 
      ProgressBar pbImage = (ProgressBar) imageLayout.findViewById(R.id.progressBar1); 

      webview.requestFocus(View.FOCUS_DOWN); 
      webview.getSettings().setBuiltInZoomControls(false); 
      webview.getSettings().setSupportZoom(true); 
      webview.getSettings().setUseWideViewPort(true); 
      webview.getSettings().setJavaScriptEnabled(true); 
      webview.getSettings().setLoadWithOverviewMode(true); 
      webview.getSettings().setUseWideViewPort(true); 
      webview.setWebViewClient(new mWebViewClient()); 
      webview.getSettings().setPluginsEnabled(true); 
      webview.clearCache(true); 
      webview.clearHistory(); 
      if(Pbar != null) { 
       webview.setWebChromeClient(new WebChromeClient() { 
       public void onProgressChanged(WebView view, int progress)  { 
        Log.i(TAG, "webview loading progress : "+ progress); 
        if(progress == 100) { 
         try { 
          Pbar.setVisibility(ProgressBar.GONE); 
         } catch (Exception e) { 
         Log.e(TAG, "timer progress GONE : "+ progress,e); 
         } 
         } 
      }); 
      } 

जब पृष्ठों तो भी इस लाइन

Log.i(TAG, "webview loading progress : "+ progress); 

निष्पादित हो रहा है जिसका मतलब है कि स्वाइप कर रहे हैं समस्या है वह वेबव्यू पृष्ठभूमि में लोड हो रहे हैं। अगर मैं 4 या अधिक पृष्ठों स्वाइप सभी WebViews लोड हो रहा है।

 destroyItem(View collection, int position, Object o) { 
    Log.d("DESTROY", "destroying view at position sheetal " + position); 

      RelativeLayout view = (RelativeLayout)o; 

        WebView tmp = webviewDictionary.get(position);; 

      tmp.getSettings().setJavaScriptEnabled(false); 
          tmp.stopLoading(); 
     if(tmp != null){ 
         Log.i(TAG, "sheetal webview is destroyed " +position); 
         try { 
          tmp.onPause(); 

          tmp.loadDataWithBaseURL("about:blank", "<html></html>","text/html", "UTF-8", null); 
          tmp=null; 
          // tmp.destroy(); 
         } 
         catch (Exception e) { 
          Log.i(TAG, "webview destroyed Exception 0" ,e); 
         } 
        } 

पृष्ठ लोड होने पर पृष्ठभूमि लोडिंग को कैसे रोकें? setOffscreenPageLimit (1) (इसका मतलब 3 पेज पिछला, CUR, अगले),

Viewpager में, 2 पेज (1 स्थिति पेज का मतलब है) ठीक से लोड नहीं है। यह एक खाली सफेद पृष्ठ दिखाता है, मैं इसे कैसे हल करूं?

अग्रिम

+0

मैं stopLoading (इस्तेमाल किया है) से है, लेकिन यह पृष्ठभूमि लोड हो रहा है बंद नहीं खुराक, जब भी destroyItem (.. ।) वेबव्यू कहा जाता है लोडिंग सही बंद करो? लेकिन लोडिंग बंद नहीं होगा। –

+0

पूरी तरह सुनिश्चित नहीं हैं, लेकिन आप को 0 पर OffscreenPageLimit निर्धारित करने की आवश्यकता नहीं है? – THelper

+0

मैं करने की कोशिश की pager.OffscreenPageLimit (0) लेकिन काम नहीं करता। –

उत्तर

2
इस

मेरी समस्या हल।

मैंने एक शब्दकोश बनाया है, इसमें कुंजी के रूप में स्थिति के साथ 3 वेबदृश्य शामिल हैं।

शब्दकोश

public Object instantiateItem(View collection, int position) { 
    . 
    . 
    . 
    webviewDictionary.put(position, webView); 
    . 
    . 
    . 
} 

WebViews सफाई में यहाँ मैं द्वारा जोड़ा जा रहा WebViews शब्दकोश

public void cleanAllWebViews() { 

    try { 

     if(webviewDictionary != null){ 

      Iterator<Integer> webViewIterator = webviewDictionary.keySet().iterator(); 

      while(webViewIterator.hasNext()) { 

       Integer key=(Integer)webViewIterator.next(); 

       WebView webView = (WebView) webviewDictionary.get(key); 


       webView.stopLoading(); 
       //     webView.pauseTimers(); 

       webView.setWebChromeClient(null); 
       webView.setWebViewClient(null); 


       webView.loadDataWithBaseURL("about:blank", "<html></html>","text/html", "UTF-8", null); 
       webViewIterator.remove(); 

      } 
     } 

     webviewDictionary = null; 


    }catch (Exception e) { 
     Log.e(TAG, "ombook last call onPauseAllWebviews Exception",e ); 
    } 
} 

    and 

    @Override 
public void onBackPressed() { 

    cleanAllWebViews(); 

    System.gc(); 

    super.onBackPressed(); 
} 
1

धन्यवाद आप "OffscreenPageLimit" 1 पर सेट करने की कोशिश की है? , ViewPager.setOffscreenPageLimit(0) doesn't work as expected

भी

आप, पृष्ठों के बीच स्विच की कुछ घटनाओं को संभालने की कोशिश की ताकि हर बार जब आप एक पृष्ठ के लिए स्विच, वर्तमान पृष्ठ के वेबव्यू लोड हो रहा है बंद हो जाएगा, है या शुरू: 0 इस पोस्ट के अनुसार एक अमान्य मान है एक खाली एचटीएमएल फाइल लोड हो रहा है?

+1

हां, पृष्ठों को नेविगेट करते समय मैंने वेबव्यू को रोक दिया है (webview.onPause()) –

+1

क्या यह काम करता है? यदि हां, तो क्या आप प्रासंगिक कोड प्रकाशित कर सकते हैं? –