15

मैं वेबसाइट लोड करने के लिए WebView का उपयोग कर रहा हूं। लेकिन यह बहुत धीमी है और विशिष्ट वेबसाइटों को लोड होने पर लीक हो रही है। मैं निम्नलिखित कोड के साथ WebView लोड कर रहा हूं।वेबव्यू वेबपृष्ठ लोड नहीं कर रहा है

@Override 
    protected void onNewIntent(Intent intent) { 
     if (intent.getStringExtra("url") != null) { 
      webView.loadurl(intent.getStringExtra("url")); 

      } 
    } 

लेकिन मैं webView.loadUrl(Config.URL); (Config.URL उपरोक्त निर्दिष्ट एक ही यूआरएल हो सकती है) बोल रहा हूँ onCreate() विधि में निम्नलिखित के साथ WebView आरंभ के बाद।

 this.webView = (WebView) findViewById(R.id.wv); 
     this.webView.getSettings().setJavaScriptEnabled(true); 
     this.webView.getSettings().setLoadsImagesAutomatically(true); 
     this.webView.getSettings().setDomStorageEnabled(true); 
     this.webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
     MyClient client = new MyClient(WebActivity.this, (ProgressBar)findViewById(R.id.progressBar)); 
     webView.setWebViewClient(client); 

एक लोड हो रहा है onCreate() से ठीक काम कर रहा है (ठीक नहीं है, यह बहुत धीमी गति से है)। लेकिन onNewIntent() से लोड होने वाला वही यूआरएल काम नहीं कर रहा है !!!onNewIntent() में ऐसा करने के बाद webView.loadurl() का उपयोग करके कोई URL लोड नहीं हुआ और वर्तमान पृष्ठ अचल हो रहा है। अर्थात। स्क्रॉलबार WebView में आगे बढ़ रहे हैं लेकिन पृष्ठ स्क्रॉल नहीं कर रहा है। मैंने को onCreate() में एक ही यूआरएल का परीक्षण किया और यह काम कर रहा है।

कर कि मैं उसकी सूचनाओं की लंबित इरादे से

intent.putExtra("url", Config.URL+targetUrl); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

साथ यूआरएल गुजर रहा लिए

। हालांकि यह कुछ डिवाइसों में काम कर रहा है यानी Google नेक्सस। लेकिन यह ज्यादातर फोन पर काम नहीं कर रहा है। क्या समस्या है जब onNewIntent() में loadurl() विधि का उपयोग कर रहा है: मैं

android:hardwareAccelerated="true" 

Myclient

public class MyClient extends WebViewClient{ 
    private Context context; 
    private Activity activity; 
    private Handler handler; 
    private Runnable runnable; 
    private ProgressBar viewBar; 
    private String ret,ret2; 
    public void setFirstLoad(boolean firstLoad) { 
     this.firstLoad = firstLoad; 
    } 

    private boolean firstLoad=false; 
    public MyClient(Activity activity, ProgressBar bar) { 
     this.context = activity.getApplicationContext(); 
     this.activity = activity; 
     viewBar=bar; 
     handler=new Handler(); 
    } 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     /*if (url.startsWith("tel:")) { 
      Intent intent = new Intent(Intent.ACTION_DIAL, 
        Uri.parse(url)); 
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(intent); 
     }else if(url.startsWith("http:") || url.startsWith("https:")) { 
      *//*view.setVisibility(View.GONE); 
      viewBar.setVisibility(View.VISIBLE);*//* 
      view.loadUrl(url); 
     } 
     return true;*/ 
     if (Uri.parse(url).getHost().equals("www.somepage.com")) { 
      return false; 
     } 
     // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs 
     try { 
      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(intent); 
      Answers.getInstance().logShare(new ShareEvent() 
      .putContentId(Build.USER) 
      .putMethod(shareName(url)) 
      .putContentName(contentDecode(url)) 
      .putContentType("news_share")); 
     }catch (android.content.ActivityNotFoundException e){ 
      Log.e("Activity not found",e.toString()); 
      Toast.makeText(context,"Application not found",Toast.LENGTH_LONG).show(); 
     } 

     return true; 

    } 

    @Override 
    public void onReceivedError(final WebView view, int errorCode, String description, final String failingUrl) { 
     //Clearing the WebView 
     try { 
      view.stopLoading(); 
     } catch (Exception e) { 
     } 
     try { 
      view.clearView(); 
     } catch (Exception e) { 
     } 
     if (view.canGoBack()) { 
      view.goBack(); 
     } 
     view.loadUrl("about:blank"); 

     //Showing and creating an alet dialog 
     AlertDialog.Builder alertDialog = new AlertDialog.Builder(activity); 
     alertDialog.setTitle("Error"); 
     alertDialog.setMessage("No internet connection was found!"); 
     alertDialog.setPositiveButton("Retry", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       view.loadUrl(failingUrl); 

      } 
     }); 
     AlertDialog alert = alertDialog.create(); 
     alert.show(); 

     //Don't forget to call supper! 
     super.onReceivedError(view, errorCode, description, failingUrl); 
    } 

    @Override 
    public void onLoadResource(final WebView view, String url) { 
     super.onLoadResource(view, url); 
     //injectScriptFile(view, "js/script.js"); 
     injectCSS(view,"css/style.css"); 
     if (firstLoad){ 
      firstLoad=false; 
      view.setVisibility(View.INVISIBLE); 
      viewBar.setVisibility(View.VISIBLE); 
      runnable=new Runnable() { 
       @Override 
       public void run() { 
        viewBar.setVisibility(View.GONE); 
        view.setVisibility(View.VISIBLE); 
       } 
      }; 
      handler.postDelayed(runnable,2000); 
     } 

     // test if the script was loaded 
     // view.loadUrl("javascript:setTimeout(hideMe(), 200)"); 
    } 

    /*@Override 
    public void onPageFinished(final WebView view, String url) { 

     //System.gc(); 
    }*/ 


    @Override 
    public void onPageFinished(WebView view, String url) { 
     super.onPageFinished(view, url); 
     System.gc(); 
    } 

सवाल है?

+0

क्षमा करें महोदय, क्या आप ** intent.getStringExtra ("url") ** में वांछित परिणाम ढूंढ रहे हैं? इसके अलावा, LogCat पर अजीब संदेश हैं? धन्यवाद। – statosdotcom

+0

@statosdotcom हाँ मैंने इसे मंशा में पाया। लॉगकैट में यह दिखा रहा है कि वेब पेज लोड हो रहा है लेकिन display.ie नहीं। पृष्ठ पिछले –

+0

से नहीं बदल रहा है अगर आप इसका उपयोग कर रहे हैं तो कृपया अपनी ऑनपॉज़ विधि शामिल करें क्योंकि इसे ऑनन्यून्टेंट से पहले कहा जाता है। क्या आपको ऑनन्यून्टेंट पर ब्रेकपॉइंट मिला है यानी क्या आप वाकई हिट हैं? –

उत्तर

6

जहां भार वेबव्यू

web.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      return super.shouldOverrideUrlLoading(view, url); 
     } 
    }); 
+0

हाँ, आप कैलिकट से सही हैं? –

+0

यह कोई जवाब नहीं है, यह वापसी विवरण के बाद निष्पादित नहीं होगा। असल में मैं इसका उपयोग कर रहा हूं। मेरा कोड देखें –

1

आप वेबव्यू संभाल करने webclient उपयोग कर सकते हैं से प्रयास करें। यहां मैं लोडिंग के साथ जावास्क्रिप्ट शामिल है।

  String aboutURL="YOUR URL"; 

     final ProgressDialog pd = ProgressDialog.show(, "", "Please wait", true); 

     WebSettings settings=Webview.getSettings(); 

     settings.setJavaScriptEnabled(true); 
     settings.setAppCacheEnabled(true); 
     settings.setDomStorageEnabled(true); 
     settings.setLoadsImagesAutomatically(true); 
     settings.setDatabaseEnabled(true); 
     settings.setRenderPriority(WebSettings.RenderPriority.HIGH); 
     settings.setCacheMode(WebSettings.LOAD_NO_CACHE); 
     settings.setSupportZoom(true); 
     settings.setBuiltInZoomControls(true); 

     Webview.setWebViewClient(new WebViewClient() { 
      public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
       Toast.makeText(activity, description, Toast.LENGTH_SHORT).show(); 
      } 

      @Override 
      public void onPageStarted(WebView view, String url, Bitmap favicon) 
      { 
       pd.show(); 
      } 
      @Override 
      public void onPageFinished(WebView view, String url) { 
       pd.dismiss(); 
      } 
     }); 
     Webview.loadUrl(aboutURL); 

यहाँ लोड हो रहा है नेटवर्क

0

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

new Handler().post(webView.loadurl(url)); 
संबंधित मुद्दे