WebView не загружает веб-страницу

Я использую WebView для загрузки веб-сайта. Но он очень медленный и протекает при загрузке определенных веб-сайтов. Я загружаю WebView со следующим кодом.

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

Но я webView.loadUrl(Config.URL); ( Config.URL может содержать тот же 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); 

Загрузка a из onCreate() работает нормально (не очень хорошо, это слишком медленно). Но тот же URL-адрес, который загружается из onNewIntent() , не работает !!! , После того, как я сделал это в onNewIntent() URL-адреса не были загружены с помощью webView.loadurl() и текущая страница становится неподвижной. то есть. WebView прокрутки перемещаются в WebView но страница не прокручивается. Я тестировал один и тот же URL-адрес в onCreate() и он работает.

Для этого я передаю URL с

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

С ожидаемым намерением от уведомлений. Хотя он работает в некоторых устройствах, например Google Nexus. Но он не работает на большинстве телефонов. у меня есть

 android:hardwareAccelerated="true" 

Мой клиент

 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(); } 

Возникает вопрос: в чем проблема при использовании loadurl() в onNewIntent() ?

Попробуйте, откуда вы загружаете webview

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

Вы можете использовать веб-клиент для обработки веб-просмотра. Здесь я включаю javascript с загрузкой.

  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); 

Здесь Загрузка обрабатывается на основе сети